Merge 25Q1 (ab/BP1A.250305.020) to aosp-main-future

Bug: 385190204
Merged-In: I04f90b42907d07c6111a7b41a531f7717df33672
Change-Id: I58e92a6e45193de820f7432dcb365c41c14d3141
diff --git a/Android.bp b/Android.bp
index 907ff12..3c2630e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -127,6 +127,7 @@
     },
 
     libs: [
+        "framework-virtualization.stubs.system",
         "telephony-common",
         "ims-common",
     ],
diff --git a/aconfig/Android.bp b/aconfig/Android.bp
index 8be93f0..768db02 100644
--- a/aconfig/Android.bp
+++ b/aconfig/Android.bp
@@ -6,7 +6,7 @@
 aconfig_declarations {
     name: "aconfig_settings_flags",
     package: "com.android.settings.flags",
-    container: "system",
+    container: "system_ext",
     srcs: [
         "*.aconfig",
         "catalyst/*.aconfig",
@@ -21,7 +21,7 @@
 aconfig_declarations {
     name: "factory_reset_flags",
     package: "com.android.settings.factory_reset",
-    container: "system",
+    container: "system_ext",
     srcs: ["factory_reset/*.aconfig"],
 }
 
@@ -33,7 +33,7 @@
 aconfig_declarations {
     name: "media_drm_flags",
     package: "com.android.settings.media_drm",
-    container: "system",
+    container: "system_ext",
     srcs: ["media_drm/*.aconfig"],
 }
 
@@ -45,7 +45,7 @@
 aconfig_declarations {
     name: "accessibility_flags",
     package: "com.android.settings.accessibility",
-    container: "system",
+    container: "system_ext",
     srcs: ["accessibility/*.aconfig"],
 }
 
@@ -57,7 +57,7 @@
 aconfig_declarations {
     name: "development_settings_flags",
     package: "com.android.settings.development",
-    container: "system",
+    container: "system_ext",
     srcs: [
         "development/**/*.aconfig",
     ],
@@ -71,7 +71,7 @@
 aconfig_declarations {
     name: "keyboard_flags",
     package: "com.android.settings.keyboard",
-    container: "system",
+    container: "system_ext",
     srcs: ["keyboard/*.aconfig"],
 }
 
diff --git a/aconfig/accessibility/accessibility_flags.aconfig b/aconfig/accessibility/accessibility_flags.aconfig
index 4a741a1..1871172 100644
--- a/aconfig/accessibility/accessibility_flags.aconfig
+++ b/aconfig/accessibility/accessibility_flags.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.accessibility"
-container: "system"
+container: "system_ext"
 
 # NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
 
diff --git a/aconfig/catalyst/about_phone.aconfig b/aconfig/catalyst/about_phone.aconfig
index 8ecde46..d0564de 100644
--- a/aconfig/catalyst/about_phone.aconfig
+++ b/aconfig/catalyst/about_phone.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_legal_information"
diff --git a/aconfig/catalyst/accessibility.aconfig b/aconfig/catalyst/accessibility.aconfig
index 7837067..fe0d7a5 100644
--- a/aconfig/catalyst/accessibility.aconfig
+++ b/aconfig/catalyst/accessibility.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_accessibility_color_and_motion"
diff --git a/aconfig/catalyst/battery.aconfig b/aconfig/catalyst/battery.aconfig
index cec40f3..7c152d9 100644
--- a/aconfig/catalyst/battery.aconfig
+++ b/aconfig/catalyst/battery.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_power_usage_summary_screen"
diff --git a/aconfig/catalyst/connected_devices.aconfig b/aconfig/catalyst/connected_devices.aconfig
index 7a335fa..5b7a70b 100644
--- a/aconfig/catalyst/connected_devices.aconfig
+++ b/aconfig/catalyst/connected_devices.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_bluetooth_switchbar_screen"
diff --git a/aconfig/catalyst/display.aconfig b/aconfig/catalyst/display.aconfig
index 9485e70..11c1d3a 100644
--- a/aconfig/catalyst/display.aconfig
+++ b/aconfig/catalyst/display.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_display_settings_screen"
diff --git a/aconfig/catalyst/location.aconfig b/aconfig/catalyst/location.aconfig
index c656bf3..24f2c53 100644
--- a/aconfig/catalyst/location.aconfig
+++ b/aconfig/catalyst/location.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_location_settings"
diff --git a/aconfig/catalyst/lockscreen.aconfig b/aconfig/catalyst/lockscreen.aconfig
index 9a84f66..280171a 100644
--- a/aconfig/catalyst/lockscreen.aconfig
+++ b/aconfig/catalyst/lockscreen.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_lockscreen_from_display_settings"
diff --git a/aconfig/catalyst/network_and_internet.aconfig b/aconfig/catalyst/network_and_internet.aconfig
index aa26ce4..e39b182 100644
--- a/aconfig/catalyst/network_and_internet.aconfig
+++ b/aconfig/catalyst/network_and_internet.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "catalyst_network_provider_and_internet_screen"
diff --git a/aconfig/catalyst/sound_screen.aconfig b/aconfig/catalyst/sound_screen.aconfig
index ac7f8bc..1eacc3a 100644
--- a/aconfig/catalyst/sound_screen.aconfig
+++ b/aconfig/catalyst/sound_screen.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "catalyst_sound_screen"
diff --git a/aconfig/catalyst/system.aconfig b/aconfig/catalyst/system.aconfig
index f87ff44..4cd1cd9 100644
--- a/aconfig/catalyst/system.aconfig
+++ b/aconfig/catalyst/system.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "catalyst_language_setting"
diff --git a/aconfig/development/settings_core_flag_declarations.aconfig b/aconfig/development/settings_core_flag_declarations.aconfig
index fec67f6..45768f4 100644
--- a/aconfig/development/settings_core_flag_declarations.aconfig
+++ b/aconfig/development/settings_core_flag_declarations.aconfig
@@ -1,12 +1,5 @@
 package: "com.android.settings.development"
-container: "system"
-
-flag {
-  name: "a2dp_offload_codec_extensibility_settings"
-  namespace: "bluetooth"
-  description: "Feature flag for Bluetooth Audio Codec extensibility in Settings"
-  bug: "323319530"
-}
+container: "system_ext"
 
 flag {
   name: "deprecate_list_activity"
diff --git a/aconfig/factory_reset/factory_reset_flag_declarations.aconfig b/aconfig/factory_reset/factory_reset_flag_declarations.aconfig
index 7feebf5..dc7d8d4 100644
--- a/aconfig/factory_reset/factory_reset_flag_declarations.aconfig
+++ b/aconfig/factory_reset/factory_reset_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.factory_reset"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "enable_factory_reset_wizard"
diff --git a/aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig b/aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig
index 18684ab..79e9ddc 100644
--- a/aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig
+++ b/aconfig/keyboard/settings_keyboard_layout_picker_features.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.keyboard"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "keyboard_layout_picker_activity_enabled"
diff --git a/aconfig/keyboard/settings_physical_keyboard_a11y_features.aconfig b/aconfig/keyboard/settings_physical_keyboard_a11y_features.aconfig
index 00c0b18..ca5cb8d 100644
--- a/aconfig/keyboard/settings_physical_keyboard_a11y_features.aconfig
+++ b/aconfig/keyboard/settings_physical_keyboard_a11y_features.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.keyboard"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "keyboard_and_touchpad_a11y_new_page_enabled"
diff --git a/aconfig/media_drm/settings_mediadrm_flag_declarations.aconfig b/aconfig/media_drm/settings_mediadrm_flag_declarations.aconfig
index 3969b29..10579eb 100644
--- a/aconfig/media_drm/settings_mediadrm_flag_declarations.aconfig
+++ b/aconfig/media_drm/settings_mediadrm_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.media_drm"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "force_l3_enabled"
diff --git a/aconfig/settings_accessibility_flag_declarations_legacy.aconfig b/aconfig/settings_accessibility_flag_declarations_legacy.aconfig
index 6e02bfe..d0e5850 100644
--- a/aconfig/settings_accessibility_flag_declarations_legacy.aconfig
+++ b/aconfig/settings_accessibility_flag_declarations_legacy.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 # NOTE: Don't add new accessibility flags here, since the package name doesn't follow
 # the best practice for setting's feature flag go/settings-trunk-stable
diff --git a/aconfig/settings_biometrics_framework_flag_declarations.aconfig b/aconfig/settings_biometrics_framework_flag_declarations.aconfig
index 820786e..e81c68e 100644
--- a/aconfig/settings_biometrics_framework_flag_declarations.aconfig
+++ b/aconfig/settings_biometrics_framework_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "biometric_settings_provider"
diff --git a/aconfig/settings_biometrics_integration_declarations.aconfig b/aconfig/settings_biometrics_integration_declarations.aconfig
index cc756c6..48bf293 100644
--- a/aconfig/settings_biometrics_integration_declarations.aconfig
+++ b/aconfig/settings_biometrics_integration_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "sfps_enroll_refinement"
diff --git a/aconfig/settings_bluetooth_declarations.aconfig b/aconfig/settings_bluetooth_declarations.aconfig
index 835a637..0c423b5 100644
--- a/aconfig/settings_bluetooth_declarations.aconfig
+++ b/aconfig/settings_bluetooth_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "enable_offload_bluetooth_operations_to_background_thread"
diff --git a/aconfig/settings_connecteddevice_flag_declarations.aconfig b/aconfig/settings_connecteddevice_flag_declarations.aconfig
index eede093..f10c019 100644
--- a/aconfig/settings_connecteddevice_flag_declarations.aconfig
+++ b/aconfig/settings_connecteddevice_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "rotation_connected_display_setting"
diff --git a/aconfig/settings_contacts_default_account_flag_declarations.aconfig b/aconfig/settings_contacts_default_account_flag_declarations.aconfig
index eb877af..621714d 100644
--- a/aconfig/settings_contacts_default_account_flag_declarations.aconfig
+++ b/aconfig/settings_contacts_default_account_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "enable_contacts_default_account_in_settings"
diff --git a/aconfig/settings_datetime_flag_declarations.aconfig b/aconfig/settings_datetime_flag_declarations.aconfig
index 93d41d6..5e14052 100644
--- a/aconfig/settings_datetime_flag_declarations.aconfig
+++ b/aconfig/settings_datetime_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "datetime_feedback"
diff --git a/aconfig/settings_development_flag_declarations.aconfig b/aconfig/settings_development_flag_declarations.aconfig
index f2452e5..cdce6e7 100644
--- a/aconfig/settings_development_flag_declarations.aconfig
+++ b/aconfig/settings_development_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 # NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
 
diff --git a/aconfig/settings_device_diagnostics_declarations.aconfig b/aconfig/settings_device_diagnostics_declarations.aconfig
index 7423f2b..90a12db 100644
--- a/aconfig/settings_device_diagnostics_declarations.aconfig
+++ b/aconfig/settings_device_diagnostics_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "enable_device_diagnostics_in_settings"
diff --git a/aconfig/settings_display_flag_declarations.aconfig b/aconfig/settings_display_flag_declarations.aconfig
index 9fe587b..52b9603 100644
--- a/aconfig/settings_display_flag_declarations.aconfig
+++ b/aconfig/settings_display_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "protect_screen_timeout_with_auth"
diff --git a/aconfig/settings_experience_flag_declarations.aconfig b/aconfig/settings_experience_flag_declarations.aconfig
index ae3af24..2d32ffa 100644
--- a/aconfig/settings_experience_flag_declarations.aconfig
+++ b/aconfig/settings_experience_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "new_apn_page_enabled"
diff --git a/aconfig/settings_flag_declarations.aconfig b/aconfig/settings_flag_declarations.aconfig
index 6eb1e02..67ae094 100644
--- a/aconfig/settings_flag_declarations.aconfig
+++ b/aconfig/settings_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "show_factory_reset_cancel_button"
diff --git a/aconfig/settings_globalintl_flag_declarations.aconfig b/aconfig/settings_globalintl_flag_declarations.aconfig
index 909e464..0757fa8 100644
--- a/aconfig/settings_globalintl_flag_declarations.aconfig
+++ b/aconfig/settings_globalintl_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "terms_of_address_enabled"
diff --git a/aconfig/settings_notification_flag_declarations.aconfig b/aconfig/settings_notification_flag_declarations.aconfig
index bdb6573..f2ef428 100644
--- a/aconfig/settings_notification_flag_declarations.aconfig
+++ b/aconfig/settings_notification_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "dedupe_dnd_settings_channels"
diff --git a/aconfig/settings_onboarding_experience_flag_declarations.aconfig b/aconfig/settings_onboarding_experience_flag_declarations.aconfig
index 8d58d40..830c101 100644
--- a/aconfig/settings_onboarding_experience_flag_declarations.aconfig
+++ b/aconfig/settings_onboarding_experience_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "enable_sound_backup"
diff --git a/aconfig/settings_perform_backup_tasks_flag_declarations.aconfig b/aconfig/settings_perform_backup_tasks_flag_declarations.aconfig
index 86bae9d..dcb876b 100644
--- a/aconfig/settings_perform_backup_tasks_flag_declarations.aconfig
+++ b/aconfig/settings_perform_backup_tasks_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "enable_perform_backup_tasks_in_settings"
diff --git a/aconfig/settings_security_flag_declarations.aconfig b/aconfig/settings_security_flag_declarations.aconfig
index 3684212..e27f835 100644
--- a/aconfig/settings_security_flag_declarations.aconfig
+++ b/aconfig/settings_security_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "protect_lock_after_timeout_with_auth"
diff --git a/aconfig/settings_telephony_flag_declarations.aconfig b/aconfig/settings_telephony_flag_declarations.aconfig
index 5919e53..3543e60 100644
--- a/aconfig/settings_telephony_flag_declarations.aconfig
+++ b/aconfig/settings_telephony_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "remove_key_hide_enable_2g"
diff --git a/aconfig/settings_threadnetwork_flag_declarations.aconfig b/aconfig/settings_threadnetwork_flag_declarations.aconfig
index e5448a9..9966467 100644
--- a/aconfig/settings_threadnetwork_flag_declarations.aconfig
+++ b/aconfig/settings_threadnetwork_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
     name: "thread_settings_enabled"
diff --git a/aconfig/settings_voice_activation_apps_flag_declarations.aconfig b/aconfig/settings_voice_activation_apps_flag_declarations.aconfig
index d72e67f..9ca3525 100644
--- a/aconfig/settings_voice_activation_apps_flag_declarations.aconfig
+++ b/aconfig/settings_voice_activation_apps_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 flag {
   name: "enable_voice_activation_apps_in_settings"
diff --git a/aconfig/settings_wifi_flag_declarations.aconfig b/aconfig/settings_wifi_flag_declarations.aconfig
index 67ed943..cb8007f 100644
--- a/aconfig/settings_wifi_flag_declarations.aconfig
+++ b/aconfig/settings_wifi_flag_declarations.aconfig
@@ -1,5 +1,5 @@
 package: "com.android.settings.flags"
-container: "system"
+container: "system_ext"
 
 # NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
 
diff --git a/proguard.flags b/proguard.flags
index d1c97f3..4ac544a 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -6,7 +6,10 @@
 -keepattributes Exceptions
 
 # Keep all Fragments in this package, which are used by reflection.
--keep public class com.android.settings*.** extends androidx.fragment.app.Fragment
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep public class com.android.settings*.** extends androidx.fragment.app.Fragment {
+    void <init>();
+}
 
 # Keep all preference controllers needed by slice and DashboardFragment.
 -keep class * extends com.android.settings.core.BasePreferenceController {
@@ -49,7 +52,10 @@
     public static ** SEARCH_INDEX_DATA_PROVIDER;
     public static ** SUMMARY_PROVIDER_FACTORY;
 }
--keep class androidx.core.app.CoreComponentFactory
+# TODO(b/373579455): Evaluate if <init> needs to be kept.
+-keep class androidx.core.app.CoreComponentFactory {
+    void <init>();
+}
 
 # Keep classes that implements CustomSliceable, which are used by reflection.
 -keepclasseswithmembers class * implements com.android.settings.slices.CustomSliceable {
diff --git a/res/layout/bluetooth_audio_codec_dialog.xml b/res/layout/bluetooth_audio_codec_dialog.xml
deleted file mode 100644
index 3a260a6..0000000
--- a/res/layout/bluetooth_audio_codec_dialog.xml
+++ /dev/null
@@ -1,75 +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.
--->
-
-<ScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical"
-        android:padding="8dp">
-
-        <RadioGroup
-            android:id="@+id/bluetooth_audio_codec_radio_group"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="@dimen/developer_option_dialog_margin_start">
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_default"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_sbc"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_aac"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_aptx"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_aptx_hd"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_ldac"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_lc3"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-            <include
-                android:id="@+id/bluetooth_audio_codec_opus"
-                layout="@layout/preference_widget_dialog_radiobutton"/>
-
-        </RadioGroup>
-
-        <include
-                android:id="@+id/bluetooth_audio_codec_help_info"
-                layout="@layout/preference_widget_dialog_summary"/>
-
-    </LinearLayout>
-
-</ScrollView>
-
diff --git a/res/layout/dialog_mobile_network_rename.xml b/res/layout/dialog_mobile_network_rename.xml
index 2c583d3..41ac001 100644
--- a/res/layout/dialog_mobile_network_rename.xml
+++ b/res/layout/dialog_mobile_network_rename.xml
@@ -45,7 +45,7 @@
                 android:layout_height="wrap_content"
                 android:inputType="text"
                 android:paddingTop="@dimen/sim_label_padding"
-                android:maxLength="50"
+                android:maxLength="@integer/sim_label_max_length"
                 android:singleLine="true"/>
 
             <TextView
diff --git a/res/raw/lottie_bubbles.json b/res/raw/lottie_bubbles.json
index e69de29..b0e5993 100644
--- a/res/raw/lottie_bubbles.json
+++ b/res/raw/lottie_bubbles.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":406,"w":412,"h":300,"nm":"Bubbles_EDU","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[165.599,75.148,0],"ix":2,"l":2},"a":{"a":0,"k":[4,4,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.693],[1.693,0],[0,1.693],[-1.694,0]],"o":[[0,1.693],[-1.694,0],[0,-1.693],[1.693,0]],"v":[[3.066,0],[0.001,3.065],[-3.066,0],[0.001,-3.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.715,4.306],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":381,"st":-219,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[261.163,141.906,0],"ix":2,"l":2},"a":{"a":0,"k":[4,4,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.693],[1.693,0],[0,1.693],[-1.694,0]],"o":[[0,1.693],[-1.694,0],[0,-1.693],[1.693,0]],"v":[[3.066,0],[0.001,3.065],[-3.066,0],[0.001,-3.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.715,4.306],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":239,"st":20,"bm":0}]},{"id":"comp_2","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[184.011,75.101,0],"ix":2,"l":2},"a":{"a":0,"k":[3.5,3.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":158,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":180,"s":[90,90,100]},{"i":{"x":[0.6,0.6,0.6],"y":[1,1,1]},"o":{"x":[1,1,0.8],"y":[0,0,0]},"t":275,"s":[90,90,100]},{"t":297,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.693],[1.693,0],[0,1.693],[-1.694,0]],"o":[[0,1.693],[-1.694,0],[0,-1.693],[1.693,0]],"v":[[3.066,0],[0.001,3.065],[-3.066,0],[0.001,-3.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333333333,0.403921568627,0.360784313725,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.464,3.623],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0}]},{"id":"comp_3","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[203.168,75.101,0],"ix":2,"l":2},"a":{"a":0,"k":[3.5,3.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":160,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":182,"s":[90,90,100]},{"i":{"x":[0.6,0.6,0.6],"y":[1,1,1]},"o":{"x":[1,1,0.8],"y":[0,0,0]},"t":273,"s":[90,90,100]},{"t":295,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.693],[1.693,0],[0,1.693],[-1.694,0]],"o":[[0,1.693],[-1.694,0],[0,-1.693],[1.693,0]],"v":[[3.066,0],[0.001,3.065],[-3.066,0],[0.001,-3.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.788235294118,0.203921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.643,3.623],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0}]},{"id":"comp_4","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".green400","cl":"green400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[221.926,75.104,0],"ix":2,"l":2},"a":{"a":0,"k":[4,3.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":162,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":184,"s":[90,90,100]},{"i":{"x":[0.6,0.6,0.6],"y":[1,1,1]},"o":{"x":[1,1,0.8],"y":[0,0,0]},"t":271,"s":[90,90,100]},{"t":293,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.004,-1.693],[1.693,-0.005],[0.005,1.693],[-1.694,0.004]],"o":[[0.005,1.693],[-1.693,0.004],[-0.004,-1.693],[1.693,-0.005]],"v":[[3.065,-0.008],[0.008,3.066],[-3.066,0.008],[-0.008,-3.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.356862745098,0.725490196078,0.454901960784,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.725,3.634],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Touch 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":254,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":272,"s":[59]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":273,"s":[59]},{"t":288,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[226.55,48.3,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[9,9,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":254,"s":[200,200]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":272,"s":[150,150]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":273,"s":[150,150]},{"t":288,"s":[200,200]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1000,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.909803926945,0.0941176489,0.537254929543,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":12,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.983088254929,0.665331482887,0.832399487495,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":254,"op":288,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Touch 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":122,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":133,"s":[59]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":134,"s":[59]},{"t":149,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[252.3,140.8,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[9,9,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":122,"s":[200,200]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":133,"s":[150,150]},{"i":{"x":[0.2,0.2],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]},"t":134,"s":[150,150]},{"t":149,"s":[200,200]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1000,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.909803926945,0.0941176489,0.537254929543,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":12,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.983088254929,0.665331482887,0.832399487495,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":122,"op":149,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":144,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":156,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":300,"s":[0]},{"t":312,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[205.95,154.75,0],"ix":2,"l":2},"a":{"a":0,"k":[67,1,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.832,1.105],[133.152,1.105]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":144,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":156,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":300,"s":[0]},{"t":312,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,213.25,0],"ix":2,"l":2},"a":{"a":0,"k":[36,49,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.2,0],[0,0],[0,2.199],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.2,0],[0,0],[0,2.199]],"v":[[4.009,8.009],[-4.009,8.009],[-8.009,4.009],[-8.009,-4.009],[-4.009,-8.009],[4.009,-8.009],[8.009,-4.009],[8.009,4.009]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.647,57.865],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.2,0],[0,0],[0,2.2],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.2,0],[0,0],[0,2.2]],"v":[[4.009,8.008],[-4.009,8.008],[-8.009,4.008],[-8.009,-4.008],[-4.009,-8.008],[4.009,-8.008],[8.009,-4.008],[8.009,4.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.647,33.26],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.2,0],[0,0],[0,2.2],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.2,0],[0,0],[0,2.2]],"v":[[4.009,8.008],[-4.009,8.008],[-8.009,4.008],[-8.009,-4.008],[-4.009,-8.008],[4.009,-8.008],[8.009,-4.008],[8.009,4.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.647,8.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.199,0],[0,0],[0,2.199],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.199,0],[0,0],[0,2.199]],"v":[[4.009,8.009],[-4.009,8.009],[-8.009,4.009],[-8.009,-4.009],[-4.009,-8.009],[4.009,-8.009],[8.009,-4.009],[8.009,4.009]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.658,57.865],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.199,0],[0,0],[0,2.2],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.199,0],[0,0],[0,2.2]],"v":[[4.009,8.008],[-4.009,8.008],[-8.009,4.008],[-8.009,-4.008],[-4.009,-8.008],[4.009,-8.008],[8.009,-4.008],[8.009,4.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.658,33.26],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.199,0],[0,0],[0,2.2],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.199,0],[0,0],[0,2.2]],"v":[[4.009,8.008],[-4.009,8.008],[-8.009,4.008],[-8.009,-4.008],[-4.009,-8.008],[4.009,-8.008],[8.009,-4.008],[8.009,4.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.658,8.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.2,0],[0,0],[0,2.199],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.2,0],[0,0],[0,2.199]],"v":[[4.009,8.009],[-4.009,8.009],[-8.009,4.009],[-8.009,-4.009],[-4.009,-8.009],[4.009,-8.009],[8.009,-4.009],[8.009,4.009]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.353,57.865],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.2,0],[0,0],[0,2.2],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.2,0],[0,0],[0,2.2]],"v":[[4.009,8.008],[-4.009,8.008],[-8.009,4.008],[-8.009,-4.008],[-4.009,-8.008],[4.009,-8.008],[8.009,-4.008],[8.009,4.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.353,33.26],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.2,0],[0,0],[0,2.2],[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0]],"o":[[0,0],[-2.2,0],[0,0],[0,-2.2],[0,0],[2.2,0],[0,0],[0,2.2]],"v":[[4.009,8.008],[-4.009,8.008],[-8.009,4.008],[-8.009,-4.008],[-4.009,-8.008],[4.009,-8.008],[8.009,-4.008],[8.009,4.008]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.353,8.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-4.694],[4.694,0],[0,4.694],[-4.694,0]],"o":[[0,4.694],[-4.694,0],[0,-4.694],[4.694,0]],"v":[[8.5,0],[0,8.5],[-8.5,0],[0,-8.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[36,88.481],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":144,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":156,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":300,"s":[0]},{"t":312,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,264.1,0],"ix":2,"l":2},"a":{"a":0,"k":[16,1.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.34,0],[0,0],[0,-0.34],[-0.34,0],[0,0],[0,0.34]],"o":[[0,0],[-0.34,0],[0,0.34],[0,0],[0.34,0],[0,-0.34]],"v":[[14.795,-0.618],[-14.795,-0.618],[-15.413,0],[-14.795,0.618],[14.795,0.618],[15.413,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,1.309],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,264.1,0],"ix":2,"l":2},"a":{"a":0,"k":[16,1.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.34,0],[0,0],[0,-0.34],[-0.34,0],[0,0],[0,0.34]],"o":[[0,0],[-0.34,0],[0,0.34],[0,0],[0.34,0],[0,-0.34]],"v":[[14.795,-0.618],[-14.795,-0.618],[-15.413,0],[-14.795,0.618],[14.795,0.618],[15.413,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16,1.309],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"ChatMatte","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,166.75,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.575,-36.689,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":160,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":181,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":275,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"t":299,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.575,-36.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":160,"op":600,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Top Ui Notification Outlines","tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":160,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":171,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":286.428,"s":[100]},{"t":299,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[205.95,94,0],"ix":2,"l":2},"a":{"a":0,"k":[64,10.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.866],[3.866,0],[0,3.866],[-3.866,0]],"o":[[0,3.866],[-3.866,0],[0,-3.866],[3.866,0]],"v":[[7,0],[0,7],[-7,0],[0,-7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.922,7.969],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.284,19.79],[126.691,19.79]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.947865325329,0.955448584463,0.959243056353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.914,0],[0,0],[0,0.913],[0,0],[0.914,0],[0,0],[0,-0.939],[0,0]],"o":[[0,0],[0.914,0],[0,0],[0,-0.914],[0,0],[-0.94,0],[0,0],[0,0.913]],"v":[[-6.199,1.684],[6.199,1.684],[7.861,0.023],[7.861,-0.023],[6.199,-1.684],[-6.153,-1.684],[-7.861,0.023],[-7.861,0.023]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.914689307119,0.922272566253,0.932703414618,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[32.414,10.243],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.909,0],[0,0],[0,0.909],[0,0],[0.91,0],[0,0],[0,-0.944]],"o":[[0,0],[0.91,0],[0,0],[0,-0.909],[0,0],[-0.944,0],[0,0.909]],"v":[[-12.824,1.684],[12.824,1.684],[14.478,0.031],[14.478,-0.031],[12.824,-1.684],[-12.762,-1.684],[-14.478,0.031]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.914689307119,0.922272566253,0.932703414618,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[39.031,5.695],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.457,0],[0,0],[0,2.457],[-2.457,0],[0,-2.457]],"o":[[0,0],[-2.457,0],[0,-2.457],[2.457,0],[0,2.457]],"v":[[0,4.449],[0,4.449],[-4.448,-0.001],[0,-4.449],[4.448,-0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[95.312,7.969],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.457,0],[0,0],[0,2.457],[-2.457,0],[0,-2.457]],"o":[[0,0],[-2.457,0],[0,-2.457],[2.457,0],[0,2.457]],"v":[[0,4.449],[0,4.449],[-4.448,-0.001],[0,-4.449],[4.448,-0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[106.902,7.969],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.457,0],[0,0],[0,2.457],[-2.457,0],[0,-2.457]],"o":[[0,0],[-2.457,0],[0,-2.457],[2.457,0],[0,2.457]],"v":[[0.001,4.449],[0.001,4.449],[-4.449,-0.001],[0.001,-4.449],[4.449,-0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[118.492,7.969],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"ChatMatte 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,166.75,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.575,-36.689,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":160,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":181,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":275,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"t":299,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.575,-36.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":160,"op":600,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Chat 01 Outlines","tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":160,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":174,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":283,"s":[100]},{"t":299,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":188.85,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":160,"s":[145.75]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":181,"s":[155.2]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":275,"s":[155.2]},{"t":299,"s":[145.75]}],"ix":4}},"a":{"a":0,"k":[39,8.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.078,0],[0,0],[0,4.078],[4.078,0],[0,0],[0,-4.077]],"o":[[0,0],[4.078,0],[0,-4.077],[0,0],[-4.078,0],[0,4.078]],"v":[[-30.765,7.414],[30.765,7.414],[38.179,0],[30.765,-7.414],[-30.765,-7.414],[-38.179,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.914689307119,0.922272566253,0.932703414618,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.617,8.627],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"ChatMatte 3","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,166.75,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.575,-36.689,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":160,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":181,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":275,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"t":299,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.575,-36.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":160,"op":600,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Chat 02 Outlines","tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":160,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":176,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":280.715,"s":[100]},{"t":299,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":223.05,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":160,"s":[162.4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":181,"s":[171.85]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":275,"s":[171.85]},{"t":299,"s":[162.4]}],"ix":4}},"a":{"a":0,"k":[39,8,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.077,0],[0,0],[0,4.078],[-4.077,0],[0,0],[0,-4.077]],"o":[[0,0],[-4.077,0],[0,-4.077],[0,0],[4.077,0],[0,4.078]],"v":[[30.766,7.414],[-30.765,7.414],[-38.179,0],[-30.765,-7.414],[30.766,-7.414],[38.179,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803981407,0.941176530427,0.996078491211,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.797,8.291],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"ChatMatte 4","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,166.75,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.575,-36.689,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":160,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":181,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":275,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"t":299,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.575,-36.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":160,"op":600,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Chat 03 Outlines","tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":160,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":178,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":278.428,"s":[100]},{"t":299,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":223.05,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":160,"s":[182.65]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":181,"s":[192.1]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":275,"s":[192.1]},{"t":299,"s":[182.65]}],"ix":4}},"a":{"a":0,"k":[39,11.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.904,0],[0,0],[0,5.904],[-5.904,0],[0,0],[0,-5.905]],"o":[[0,0],[-5.904,0],[0,-5.905],[0,0],[5.905,0],[0,5.904]],"v":[[27.445,10.736],[-27.444,10.736],[-38.179,0.001],[-27.444,-10.736],[27.444,-10.736],[38.179,0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803981407,0.941176530427,0.996078491211,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.797,11.276],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"ChatMatte 5","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,166.75,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.575,-36.689,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":160,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":181,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":275,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"t":299,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.575,-36.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":160,"op":600,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":"Chat 04 Outlines","tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":160,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":180,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":276.143,"s":[100]},{"t":299,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":188.85,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":160,"s":[202]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":181,"s":[211.45]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":275,"s":[211.45]},{"t":299,"s":[202]}],"ix":4}},"a":{"a":0,"k":[39,8,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.078,0],[0,0],[0,4.078],[4.078,0],[0,0],[0,-4.078]],"o":[[0,0],[4.078,0],[0,-4.078],[0,0],[-4.078,0],[0,4.078]],"v":[[-30.765,7.414],[30.765,7.414],[38.179,0],[30.765,-7.414],[-30.765,-7.414],[-38.179,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.914689307119,0.922272566253,0.932703414618,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.617,8.262],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":"ChatMatte 6","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,166.75,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.575,-36.689,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":160,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":181,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":275,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"t":299,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.575,-36.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":160,"op":600,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":"Chat 05 Outlines","tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":160,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":181,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":275,"s":[100]},{"t":299,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":205.95,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":160,"s":[227.65]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":181,"s":[237.1]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":275,"s":[237.1]},{"t":299,"s":[227.65]}],"ix":4}},"a":{"a":0,"k":[58,8.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.457,0],[0,0],[0,2.456],[-2.457,0],[0,-2.457]],"o":[[0,0],[-2.457,0],[0,-2.457],[2.457,0],[0,2.456]],"v":[[0,4.449],[0,4.449],[-4.448,0.001],[0,-4.449],[4.448,0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.892,8.624],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.457,0],[0,0],[0,2.456],[-2.457,0],[0,-2.457]],"o":[[0,0],[-2.457,0],[0,-2.457],[2.457,0],[0,2.456]],"v":[[0,4.449],[0,4.449],[-4.448,0.001],[0,-4.449],[4.448,0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.481,8.624],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.457,0],[0,0],[0,2.456],[-2.457,0],[0,-2.457]],"o":[[0,0],[-2.457,0],[0,-2.457],[2.457,0],[0,2.456]],"v":[[0.001,4.449],[0.001,4.449],[-4.449,0.001],[0.001,-4.449],[4.449,0.001]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.071,8.624],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.79,0],[0,0],[0,3.79],[0,0],[3.79,0],[0,0],[0,-4.034],[0,0]],"o":[[0,0],[3.79,0],[0,0],[0,-3.791],[0,0],[-4.033,0],[0,0],[0,3.79]],"v":[[-33.09,7.414],[33.092,7.414],[39.982,0.522],[39.982,-0.523],[33.092,-7.414],[-32.648,-7.414],[-39.982,-0.08],[-39.982,0.522]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.914689307119,0.922272566253,0.932703414618,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[74.994,8.624],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":"Chat Pointer Outlines","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":292.143,"s":[100]},{"t":293.28515625,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":165,"s":[158.7,84.325,0],"to":[0,-0.412,0],"ti":[0,0.412,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":168,"s":[158.7,81.85,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":289.857,"s":[158.7,81.85,0],"to":[0,0.413,0],"ti":[0,-0.413,0]},{"t":293.28515625,"s":[158.7,84.325,0]}],"ix":2,"l":2},"a":{"a":0,"k":[3.5,3,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-2.786,1.115],[-0.001,-1.115],[2.786,1.115]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.874,1.475],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":616,"st":16,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"ChatMatte 7","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":160,"s":[24]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":165,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":293.285,"s":[100]},{"t":299,"s":[24]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,166.75,0],"ix":2,"l":2},"a":{"a":0,"k":[-0.575,-36.689,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":160,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":181,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":275,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.5,83.478],[53.5,86.478],[-53.5,86.478],[-56.5,83.478],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]},{"t":299,"s":[{"i":[[0,-1.657],[0,0],[1.657,0],[0,0],[0,1.657],[0,0],[-1.657,0],[0,0]],"o":[[0,0],[0,1.657],[0,0],[-1.657,0],[0,0],[0,-1.657],[0,0],[1.657,0]],"v":[[56.5,-83.478],[56.575,-89.522],[53.575,-86.522],[-53.425,-86.522],[-56.425,-89.522],[-56.5,-83.478],[-53.5,-86.478],[53.5,-86.478]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.575,-36.689],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":160,"op":600,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue300","cl":"blue300","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":144,"s":[100]},{"t":154,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[244.662,135.587,0],"ix":2,"l":2},"a":{"a":0,"k":[38,8.125,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.2],"y":[1,1,1]},"o":{"x":[0.001,0.001,0.001],"y":[0,0,0]},"t":45,"s":[0,0,100]},{"i":{"x":[0.71,0.71,0.833],"y":[1,1,1]},"o":{"x":[0.318,0.318,0.001],"y":[0,0,0]},"t":59,"s":[94.5,94.5,100]},{"t":68,"s":[90,90,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[1.244,0],[0,0],[0,-1.244],[0,0],[-1.244,0],[0,0],[0,1.244],[0,0]],"o":[[0,0],[0,0],[0,-1.244],[0,0],[-1.244,0],[0,0],[0,1.244],[0,0],[1.244,0],[0,0],[0,0]],"v":[[18.328,0],[17.101,-1.227],[17.101,-4.883],[14.84,-7.145],[-16.067,-7.145],[-18.328,-4.883],[-18.328,4.883],[-16.067,7.145],[14.84,7.145],[17.101,4.883],[17.101,1.227]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.541176470588,0.705882352941,0.972549019608,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[19.046,8.106],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.243,0],[0,0],[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244]],"o":[[0,5.244],[0,0],[-5.243,0],[0,0],[0,-5.244],[0,0],[5.243,0],[0,0]],"v":[[64.188,114.112],[54.679,123.622],[-54.679,123.622],[-64.188,114.112],[-64.188,-114.112],[-54.679,-123.622],[54.679,-123.622],[64.188,-114.112]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,1.313],[0,0],[1.313,0],[0,0],[6.554,0],[0,0],[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[0,1.313],[0,0],[1.313,0],[0,0]],"o":[[0,0],[0,-1.313],[0,0],[0,-6.555],[0,0],[-6.554,0],[0,0],[0,6.555],[0,0],[6.554,0],[0,0],[1.313,0],[0,0],[0,-1.313],[0,0],[1.313,0]],"v":[[68.943,-52.302],[68.943,-61.811],[66.566,-64.188],[66.566,-114.112],[54.679,-126],[-54.679,-126],[-66.566,-114.112],[-66.566,114.112],[-54.679,126],[54.679,126],[66.566,114.112],[66.566,-2.378],[68.943,-4.755],[68.943,-28.528],[66.566,-30.906],[66.566,-49.924]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901969433,0.86274510622,0.878431379795,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1800,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":0,"nm":"BlueDot","parent":24,"refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[62.89,101.169,0],"ix":2,"l":2},"a":{"a":0,"k":[206,150,0],"ix":1,"l":2},"s":{"a":0,"k":[111.111,111.111,100],"ix":6,"l":2}},"ao":0,"w":412,"h":300,"ip":239,"op":620,"st":239,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":".blue50","cl":"blue50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.437],"y":[1]},"o":{"x":[0.637],"y":[0]},"t":294,"s":[159.299]},{"t":324,"s":[254.963]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.152],"y":[1]},"o":{"x":[0.414],"y":[0]},"t":306,"s":[68.848]},{"t":350,"s":[135.585]}],"ix":4}},"a":{"a":0,"k":[11,11,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-4.694],[4.694,0],[0,4.694],[-4.694,0]],"o":[[0,4.694],[-4.694,0],[0,-4.694],[4.694,0]],"v":[[8.5,0],[0,8.5],[-8.5,0],[0,-8.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11,11],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":239,"op":600,"st":0,"bm":0},{"ddd":0,"ind":25,"ty":0,"nm":"BlueDot","parent":26,"refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-43.429,27.058,0],"ix":2,"l":2},"a":{"a":0,"k":[206,150,0],"ix":1,"l":2},"s":{"a":0,"k":[111.111,111.111,100],"ix":6,"l":2}},"ao":0,"w":412,"h":300,"ip":0,"op":239,"st":0,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":".blue50","cl":"blue50","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":144,"s":[254.963,135.566,0],"to":[0.004,-63.556,0],"ti":[94.364,1.013,0]},{"t":168,"s":[159.299,68.86,0],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":288.551,"s":[158.486,68.672,0],"to":[82.114,1.013,0],"ti":[-0.996,-58.556,0]},{"t":332,"s":[254.65,134.91,0]}],"ix":2,"l":2},"a":{"a":0,"k":[11,11,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-4.694],[4.694,0],[0,4.694],[-4.694,0]],"o":[[0,4.694],[-4.694,0],[0,-4.694],[4.694,0]],"v":[[8.5,0],[0,8.5],[-8.5,0],[0,-8.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[11,11],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":239,"st":0,"bm":0},{"ddd":0,"ind":27,"ty":0,"nm":"RedDot","parent":28,"refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[40.056,99.722,0],"ix":2,"l":2},"a":{"a":0,"k":[206,150,0],"ix":1,"l":2},"s":{"a":0,"k":[111.111,111.111,100],"ix":6,"l":2}},"ao":0,"w":412,"h":300,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":".red50","cl":"red50","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":144,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":155.854,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":302,"s":[100]},{"t":315,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":144,"s":[254.775,135.175,0],"to":[-0.412,-66.188,0],"ti":[73.312,0.488,0]},{"t":169,"s":[178.05,68.8,0],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":287.242,"s":[178.05,68.8,0],"to":[73.312,0.488,0],"ti":[-0.413,-66.188,0]},{"t":329,"s":[254.775,135.175,0]}],"ix":2,"l":2},"a":{"a":0,"k":[9,9.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-4.694],[4.695,0],[0,4.695],[-4.694,0]],"o":[[0,4.695],[-4.694,0],[0,-4.694],[4.695,0]],"v":[[8.5,0],[0,8.5],[-8.5,0],[0,-8.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.909803921569,0.901960784314,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.054,9.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":29,"ty":0,"nm":"YellowDot","parent":30,"refId":"comp_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[19.056,99.722,0],"ix":2,"l":2},"a":{"a":0,"k":[206,150,0],"ix":1,"l":2},"s":{"a":0,"k":[111.111,111.111,100],"ix":6,"l":2}},"ao":0,"w":412,"h":300,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":30,"ty":4,"nm":".yellow50","cl":"yellow50","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":146.734,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":158.588,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":300.885,"s":[100]},{"t":314,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":144,"s":[254.55,134.95,0],"to":[0.3,-65.925,0],"ti":[57.75,0.225,0]},{"t":170,"s":[196.95,68.8,0],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":285.93,"s":[196.95,68.8,0],"to":[57.75,0.225,0],"ti":[0.3,-65.925,0]},{"t":327,"s":[254.55,134.95,0]}],"ix":2,"l":2},"a":{"a":0,"k":[9,9.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-4.694],[4.694,0],[0,4.695],[-4.694,0]],"o":[[0,4.695],[-4.694,0],[0,-4.694],[4.694,0]],"v":[[8.5,0],[0,8.5],[-8.5,0],[0,-8.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078431373,0.96862745098,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.234,9.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":31,"ty":0,"nm":"GreenDot","refId":"comp_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2,"l":2},"a":{"a":0,"k":[206,150,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":300,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":32,"ty":4,"nm":".green50","cl":"green50","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":149.471,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":161.324,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":297.301,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":144,"s":[255,134.95,0],"to":[-0.3,-65.925,0],"ti":[39.225,0.225,0]},{"t":171,"s":[215.4,68.8,0],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":284.621,"s":[215.4,68.8,0],"to":[39.225,0.225,0],"ti":[-0.3,-65.925,0]},{"t":325,"s":[255,134.95,0]}],"ix":2,"l":2},"a":{"a":0,"k":[9.5,9.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.013,-4.694],[4.695,-0.012],[0.013,4.694],[-4.695,0.013]],"o":[[0.013,4.694],[-4.694,0.013],[-0.013,-4.694],[4.694,-0.012]],"v":[[8.5,-0.023],[0.022,8.499],[-8.5,0.023],[-0.022,-8.501]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.901960784314,0.956862745098,0.917647058824,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[9.297,9.684],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":33,"ty":4,"nm":"BlueDot","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[240.657,75.109,0],"ix":2,"l":2},"a":{"a":0,"k":[3.5,3.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0.2],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":164,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":186,"s":[90,90,100]},{"i":{"x":[0.6,0.6,0.6],"y":[1,1,1]},"o":{"x":[1,1,0.8],"y":[0,0,0]},"t":269,"s":[90,90,100]},{"t":291,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.693],[1.693,0],[0,1.693],[-1.694,0]],"o":[[0,1.693],[-1.694,0],[0,-1.693],[1.693,0]],"v":[[3.066,0],[0.001,3.065],[-3.066,0],[0.001,-3.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.297618701411,0.5469255036,0.959243056353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.331,3.623],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":34,"ty":4,"nm":"BlueBubble","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":152.205,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":164.059,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":293.715,"s":[100]},{"t":309.25,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":144,"s":[254.775,134.725,0],"to":[-0.15,-65.475,0],"ti":[20.362,0.188,0]},{"t":172,"s":[233.85,68.8,0],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":283.311,"s":[233.85,68.8,0],"to":[20.362,0.188,0],"ti":[-0.15,-65.475,0]},{"t":325,"s":[254.775,134.725,0]}],"ix":2,"l":2},"a":{"a":0,"k":[9,9.5,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-4.694],[4.694,0],[0,4.695],[-4.694,0]],"o":[[0,4.695],[-4.694,0],[0,-4.694],[4.694,0]],"v":[[8.5,0],[0,8.5],[-8.5,0],[0,-8.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.909803921569,0.941176470588,0.996078431373,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.922,9.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0},{"ddd":0,"ind":35,"ty":4,"nm":"+","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":155,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":167,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":283,"s":[100]},{"t":300,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":144,"s":[254.668,134.855,0],"to":[-0.387,-11.006,0],"ti":[2.531,0.405,0]},{"t":173,"s":[252.345,68.82,0],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":282,"s":[252.345,68.82,0],"to":[2.531,0.405,0],"ti":[-0.304,-9.922,0]},{"t":325,"s":[254.668,134.855,0]}],"ix":2,"l":2},"a":{"a":0,"k":[9,9,0],"ix":1,"l":2},"s":{"a":0,"k":[90,90,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[3,0.5],[-3,0.5],[-3,-0.5],[3,-0.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.204000001795,0.455000005984,0.877999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.797,9.063],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.5,3],[-0.5,3],[-0.5,-3],[0.5,-3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.204000001795,0.455000005984,0.877999997606,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.797,9.063],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.013,-4.694],[4.695,-0.012],[0.013,4.695],[-4.695,0.013]],"o":[[0.013,4.694],[-4.694,0.013],[-0.012,-4.694],[4.694,-0.012]],"v":[[8.5,-0.023],[0.021,8.499],[-8.5,0.023],[-0.022,-8.501]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[8.797,9.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":36,"ty":4,"nm":".grey600","cl":"grey600","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":156,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":172,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":284,"s":[100]},{"t":316,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,150,0],"ix":2,"l":2},"a":{"a":0,"k":[67,133,0],"ix":1,"l":2},"s":{"a":0,"k":[96.6,94,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.77,0],[0,0],[0,2.769],[0,0],[-5.334,0.268],[0,0],[0,-2.769],[0,0]],"o":[[0,0],[-2.769,0],[0,0],[0.09,-4.634],[0,0],[2.77,0],[0,0],[0,2.769]],"v":[[58.38,132.51],[-59.674,132.51],[-67.363,124.149],[-67.363,-122.821],[-58.315,-132.51],[58.38,-132.51],[67.298,-126.81],[67.298,124.149]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960784314,0.525490196078,0.545098039216,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[66.985,133.061],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":620,"st":20,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/res/values/integers.xml b/res/values/integers.xml
index 5631e40..9610b32 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -42,4 +42,6 @@
     <integer name="pointer_scale_seek_bar_end">3</integer>
 
     <integer name="max_integer">2147483647</integer>
+
+    <integer name="sim_label_max_length">50</integer>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 730c258..d96554d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -12770,36 +12770,36 @@
     <!-- Developer Settings: Search keywords for the Profile HWUI rendering. [CHAR_LIMIT=NONE] -->
     <string name="track_frame_time_keywords">GPU</string>
 
-    <!-- setting Checkbox title whether to boot with 16KB page size [CHAR_LIMIT=35] -->
-    <string name="enable_16k_pages">Boot with 16KB page size</string>
-    <!-- setting Checkbox summary whether to boot with 16K page size[CHAR_LIMIT=50] -->
-    <string name="enable_16k_pages_summary">Boot device using 16KB page size supported kernel</string>
-    <!-- Confirmation dialog title to ensure user wishes to enable 16K page size -->
-    <string name="confirm_enable_16k_pages_title">Switch from 4KB mode to 16KB mode</string>
-    <!-- Warning dialog message to confirm user wishes to enable 16KB page size -->
-    <string name="confirm_enable_16k_pages_text">You are in the page-agnostic mode running a 4KB kernel, and you are switching to the 16KB mode.
+    <!-- setting Checkbox title whether to boot with 16 KB page size [CHAR_LIMIT=35] -->
+    <string name="enable_16k_pages">Boot with 16 KB page size</string>
+    <!-- setting Checkbox summary whether to boot with 16 KB page size[CHAR_LIMIT=50] -->
+    <string name="enable_16k_pages_summary">Boot device using 16 KB page size supported kernel</string>
+    <!-- Confirmation dialog title to ensure user wishes to enable 16 KB page size -->
+    <string name="confirm_enable_16k_pages_title">Switch from 4 KB mode to 16 KB mode</string>
+    <!-- Warning dialog message to confirm user wishes to enable 16 KB page size -->
+    <string name="confirm_enable_16k_pages_text">You are in the page-agnostic mode running a 4 KB kernel, and you are switching to the 16 KB mode.
         Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk.
         This will reboot the device. Some features will be disabled in these modes, so some applications may not work.
-        To return the device to production mode, you would need to then, switch back to the 4KB mode and lock the bootloader,
+        To return the device to production mode, you would need to then, switch back to the 4 KB mode and lock the bootloader,
         which factory resets the device. After the device successfully boots into Android, disable OEM unlocking in Developer options.</string>
     <!-- dialog title to confirm user wishes to revert to 4k page size kernel -->
-    <string name="confirm_enable_4k_pages_title">Switch from 16KB mode to 4KB mode</string>
+    <string name="confirm_enable_4k_pages_title">Switch from 16 KB mode to 4 KB mode</string>
     <!-- dialog message to confirm user wishes to enable 4K page size -->
-    <string name="confirm_enable_4k_pages_text">You are in the page-agnostic mode running a 16KB kernel, and you are switching to the 4KB mode.
+    <string name="confirm_enable_4k_pages_text">You are in the page-agnostic mode running a 16 KB kernel, and you are switching to the 4 KB mode.
         Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk.
         This will reboot the device. Some features will be disabled in these modes, so some applications may not work. To return the device to production mode,
         you would need to then lock the bootloader, which factory resets the device. After the device successfully boots into Android, disable OEM unlocking in Developer options.</string>
     <!-- Toast message when 16k OTA update fails -->
-    <string name="toast_16k_update_failed_text">Failed to update kernel to 16KB pages compatible kernel.</string>
+    <string name="toast_16k_update_failed_text">Failed to update kernel to 16 KB pages compatible kernel.</string>
     <string name="progress_16k_ota_title">Applying change</string>
     <!-- Confirmation dialog title and text to reformat data to ext4 -->
-    <string name="confirm_format_ext4_title">Reformat device to ext4? (required for 16KB mode)</string>
-    <string name="confirm_format_ext4_text">This device’s data partition needs to be converted to ext4 before using the 16KB developer option.
+    <string name="confirm_format_ext4_title">Reformat device to ext4? (required for 16 KB mode)</string>
+    <string name="confirm_format_ext4_text">This device’s data partition needs to be converted to ext4 before using the 16 KB developer option.
         Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk.
-        Activating the 16KB option will require one more reboot after this. Once you are in this mode, you can switch back and forth between 4KB and 16KB mode with a single reboot.
-        Some features will be disabled in these modes, so some applications may not work. To return the device to production mode, you would need to switch back to 4KB mode and
+        Activating the 16 KB option will require one more reboot after this. Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot.
+        Some features will be disabled in these modes, so some applications may not work. To return the device to production mode, you would need to switch back to 4 KB mode and
         then lock the bootloader, which factory resets the device. After the device successfully boots into Android, disable OEM unlocking in Developer options.
-        The device will be wiped and the filesystem will be changed to ext4 after confirmation. After this completes, please come back to enable 16KB again.
+        The device will be wiped and the filesystem will be changed to ext4 after confirmation. After this completes, please come back to enable 16 KB again.
     </string>
     <!-- Text for confirmation buttion for ext4 -->
     <string name="confirm_ext4_button_text">Erase all data</string>
@@ -12807,22 +12807,22 @@
     <string name="format_ext4_failure_toast">Failed to reformat and wipe the data partition to ext4.</string>
     <!-- Dialog to OEM unlock the device before using 16K developer option -->
     <string name="confirm_oem_unlock_for_16k_title">Bootloader Unlock Required</string>
-    <string name="confirm_oem_unlock_for_16k_text">This device needs to have the bootloader unlocked before using the 16KB developer option.
+    <string name="confirm_oem_unlock_for_16k_text">This device needs to have the bootloader unlocked before using the 16 KB developer option.
         Software integrity cannot be guaranteed in this mode, and any data stored on the phone while the bootloader is unlocked may be at risk.
-        All user data and settings will be wiped when activating 16KB mode. Once the bootloader is unlocked, activating the 16KB option will require two reboots.
-        Once you are in this mode, you can switch back and forth between 4KB and 16KB mode with a single reboot. Some features will be disabled in these modes,
-        so some applications may not work. To return the device to production mode, you would need to switch back to 4KB mode and then OEM/bootloader lock (which factory resets) the device.
+        All user data and settings will be wiped when activating 16 KB mode. Once the bootloader is unlocked, activating the 16 KB option will require two reboots.
+        Once you are in this mode, you can switch back and forth between 4 KB and 16 KB mode with a single reboot. Some features will be disabled in these modes,
+        so some applications may not work. To return the device to production mode, you would need to switch back to 4 KB mode and then OEM/bootloader lock (which factory resets) the device.
         Please unlock the bootloader and try again. You can see instructions for how to do this at
         &lt;a href=\"https://source.android.com/docs/core/architecture/bootloader/locking_unlocking\"&gt;https://source.android.com/docs/core/architecture/bootloader/locking_unlocking&lt;/a&gt;
     </string>
     <!-- persistent notification 4k page agnostic mode title -->
-    <string name="page_agnostic_4k_pages_title">Using 4KB page-agnostic mode</string>
+    <string name="page_agnostic_4k_pages_title">Using 4 KB page-agnostic mode</string>
     <!-- persistent notification 4k page agnostic mode text -->
-    <string name="page_agnostic_4k_pages_text_short">You are in the 4KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
+    <string name="page_agnostic_4k_pages_text_short">You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
         and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work.
         In order to re-enter the production mode, you must lock the bootloader of the device. Tap to read more.</string>
     <!-- persistent notification 16k page agnostic mode title -->
-    <string name="page_agnostic_4k_pages_text">You are in the 4KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
+    <string name="page_agnostic_4k_pages_text">You are in the 4 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
         and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work.
         In order to re-enter the production mode, you must lock the bootloader of the device. This would factory reset the device again and restore it to production settings.
         After the device successfully boots into Android, disable OEM unlocking in Developer options.
@@ -12831,20 +12831,20 @@
         or use &lt;a href=\"https://flash.android.com/back-to-public\"&gt;https://flash.android.com/back-to-public&lt;/a&gt;
         and select \'Wipe Device\', \'Lock Bootloader\' and \'Force Flash all partitions\'.</string>
     <!-- persistent notification 16k page agnostic mode title -->
-    <string name="page_agnostic_16k_pages_title">Using 16KB page-agnostic mode</string>
+    <string name="page_agnostic_16k_pages_title">Using 16 KB page-agnostic mode</string>
     <!-- persistent notification 16k page agnostic mode text -->
-    <string name="page_agnostic_16k_pages_text_short">You are in the 16KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
+    <string name="page_agnostic_16k_pages_text_short">You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
         and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work.
-        In order to re-enter the production mode, you must, switch back to 4KB mode and then lock the bootloader of the device. Tap to read more.</string>
-    <string name="page_agnostic_16k_pages_text">You are in the 16KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
+        In order to re-enter the production mode, you must, switch back to 4 KB mode and then lock the bootloader of the device. Tap to read more.</string>
+    <string name="page_agnostic_16k_pages_text">You are in the 16 KB mode of the page-agnostic mode. Software integrity cannot be guaranteed in this mode,
         and any data stored on the phone while the bootloader is unlocked may be at risk. Some features will be disabled in these modes, so some applications may not work.
-        In order to re-enter the production mode, you must, switch back to 4KB mode and then lock the bootloader of the device. This would factory reset the device again and
+        In order to re-enter the production mode, you must, switch back to 4 KB mode and then lock the bootloader of the device. This would factory reset the device again and
         restore it to production settings. After the device successfully boots into Android, disable OEM unlocking in Developer options.
         If the device fails to boot into Android or is unstable, re-flash the device with the latest factory images from
         &lt;a href=\"https://developers.google.com/android/images\"&gt;https://developers.google.com/android/images&lt;/a&gt;
         or use &lt;a href=\"https://flash.android.com/back-to-public\"&gt;https://flash.android.com/back-to-public&lt;/a&gt;
         and select \'Wipe Device\', \'Lock Bootloader\' and \'Force Flash all partitions\'.</string>
-    <string name="page_agnostic_notification_channel_name">16KB Page-agnostic Mode</string>
+    <string name="page_agnostic_notification_channel_name">16 KB Page-agnostic Mode</string>
     <string name="page_agnostic_notification_action">Read more</string>
 
     <string name= "enable_16k_app_compat_title">Run app with page size compat mode</string>
@@ -13256,7 +13256,7 @@
     <string name="thread_network_settings_learn_more">Learn more about Thread</string>
 
     <!-- URL for Thread network settings learn more link [CHAR_LIMIT=NONE] -->
-    <string name="thread_network_settings_learn_more_link" translatable="false">https://developers.home.google.com</string>
+    <string name="thread_network_settings_learn_more_link" translatable="false">https://support.google.com/android?p=thread_toggle</string>
 
     <!-- Label for the camera use toggle [CHAR LIMIT=40] -->
     <string name="camera_toggle_title">Camera access</string>
diff --git a/res/xml/connected_devices_advanced.xml b/res/xml/connected_devices_advanced.xml
index 779555b..f491055 100644
--- a/res/xml/connected_devices_advanced.xml
+++ b/res/xml/connected_devices_advanced.xml
@@ -42,7 +42,7 @@
         android:order="-7"
         android:title="@string/nfc_quick_toggle_title"
         settings:controller="com.android.settings.connecteddevice.NfcAndPaymentFragmentController"
-        settings:searchable="false"
+        settings:searchable="true"
         settings:useAdminDisabledSummary="true"
         settings:userRestriction="no_near_field_communication_radio" />
 
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index 25bc062..9d68854 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -114,11 +114,10 @@
             android:summary="@string/oem_unlock_enable_summary"
             settings:useAdditionalSummary="true" />
 
-        <SwitchPreference
+        <SwitchPreferenceCompat
             android:key="enable_16k_pages"
             android:title="@string/enable_16k_pages"
-            android:summary="@string/enable_16k_pages_summary"
-            settings:useAdditionalSummary="true" />
+            android:summary="@string/enable_16k_pages_summary"/>
 
         <Preference
             android:key="running_apps"
@@ -434,14 +433,6 @@
             android:key="bluetooth_hd_audio_settings"
             android:title="@string/bluetooth_profile_a2dp_high_quality_unknown_codec"/>
 
-        <com.android.settings.development.bluetooth.BluetoothCodecDialogPreference
-            android:key="bluetooth_audio_codec_settings"
-            android:title="@string/bluetooth_select_a2dp_codec_type"
-            android:dialogTitle="@string/bluetooth_select_a2dp_codec_type_dialog_title"
-            android:dialogLayout="@layout/bluetooth_audio_codec_dialog"
-            android:positiveButtonText=""
-            android:negativeButtonText="@string/dlg_ok"/>
-
         <ListPreference
             android:key="bluetooth_audio_codec_settings_list"
             android:title="@string/bluetooth_select_a2dp_codec_type"
diff --git a/src/com/android/settings/accounts/OWNERS b/src/com/android/settings/accounts/OWNERS
new file mode 100644
index 0000000..8ddd950
--- /dev/null
+++ b/src/com/android/settings/accounts/OWNERS
@@ -0,0 +1,11 @@
+# Default reviewers for account settings.
+jcivelli@google.com
+aseemk@google.com
+dementyev@google.com
+
+# For CredMan related reviews.
+reemabajwa@google.com
+helenqin@google.com
+sgjerry@google.com
+jbabs@google.com
+leecam@google.com
\ No newline at end of file
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/OWNERS b/src/com/android/settings/applications/specialaccess/notificationaccess/OWNERS
index 4338198..4628f8c 100644
--- a/src/com/android/settings/applications/specialaccess/notificationaccess/OWNERS
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/OWNERS
@@ -1,4 +1 @@
-# Default reviewers for this and subdirectories.
-beverlyt@google.com
-dsandler@android.com
-juliacr@google.com
\ No newline at end of file
+include platform/frameworks/base:/services/core/java/com/android/server/notification/OWNERS
\ No newline at end of file
diff --git a/src/com/android/settings/applications/specialaccess/zenaccess/OWNERS b/src/com/android/settings/applications/specialaccess/zenaccess/OWNERS
index 9b5f41e..4628f8c 100644
--- a/src/com/android/settings/applications/specialaccess/zenaccess/OWNERS
+++ b/src/com/android/settings/applications/specialaccess/zenaccess/OWNERS
@@ -1,2 +1 @@
-beverlyt@google.com
-juliacr@google.com
\ No newline at end of file
+include platform/frameworks/base:/services/core/java/com/android/server/notification/OWNERS
\ No newline at end of file
diff --git a/src/com/android/settings/biometrics/OWNERS b/src/com/android/settings/biometrics/OWNERS
index f804b0f..d148e71 100644
--- a/src/com/android/settings/biometrics/OWNERS
+++ b/src/com/android/settings/biometrics/OWNERS
@@ -3,7 +3,6 @@
 
 graciecheng@google.com
 ilyamaty@google.com
-jaggies@google.com
 jbolinger@google.com
 jeffpu@google.com
 joshmccloskey@google.com
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java b/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
index 32d2a11..d520cd6 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
@@ -144,7 +144,7 @@
 
     @Override
     protected void startEnrollmentInternal() {
-        super.startEnrollment();
+        super.startEnrollmentInternal();
         mPreviewFragment = (FaceEnrollPreviewFragment) getSupportFragmentManager()
                 .findFragmentByTag(TAG_FACE_PREVIEW);
         if (mPreviewFragment == null) {
diff --git a/src/com/android/settings/connecteddevice/usb/OWNERS b/src/com/android/settings/connecteddevice/usb/OWNERS
index bb3b8fc..60abfeb 100644
--- a/src/com/android/settings/connecteddevice/usb/OWNERS
+++ b/src/com/android/settings/connecteddevice/usb/OWNERS
@@ -1,5 +1,4 @@
 # Default reviewers for this and subdirectories.
-zhangjerry@google.com
 badhri@google.com
 hughchen@google.com
 timhypeng@google.com
diff --git a/src/com/android/settings/datausage/OWNERS b/src/com/android/settings/datausage/OWNERS
index 1ad5b2d..acefc8d 100644
--- a/src/com/android/settings/datausage/OWNERS
+++ b/src/com/android/settings/datausage/OWNERS
@@ -1,6 +1,5 @@
 # Default reviewers for this and subdirectories.
 andychou@google.com
-bonianchen@google.com
 changbetty@google.com
 songferngwang@google.com
 wengsu@google.com
diff --git a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java b/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java
deleted file mode 100644
index 09f3871..0000000
--- a/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceController.java
+++ /dev/null
@@ -1,225 +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.settings.development;
-
-import android.bluetooth.BluetoothA2dp;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothCodecConfig;
-import android.bluetooth.BluetoothCodecStatus;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothManager;
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.ListPreference;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnDestroy;
-import com.android.settingslib.development.DeveloperOptionsPreferenceController;
-
-import java.util.List;
-
-public abstract class AbstractBluetoothA2dpPreferenceController extends
-        DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener,
-        PreferenceControllerMixin, BluetoothServiceConnectionListener, LifecycleObserver,
-        OnDestroy {
-
-    @VisibleForTesting
-    static final int STREAMING_LABEL_ID =
-            com.android.settingslib.R.string.bluetooth_select_a2dp_codec_streaming_label;
-
-    protected final BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
-    protected BluetoothA2dp mBluetoothA2dp;
-    protected ListPreference mPreference;
-    private final String[] mListValues;
-    private final String[] mListSummaries;
-
-    @VisibleForTesting
-    BluetoothAdapter mBluetoothAdapter;
-
-    public AbstractBluetoothA2dpPreferenceController(Context context, Lifecycle lifecycle,
-            BluetoothA2dpConfigStore store) {
-        super(context);
-
-        mBluetoothA2dpConfigStore = store;
-        mBluetoothAdapter = context.getSystemService(BluetoothManager.class).getAdapter();
-        mListValues = getListValues();
-        mListSummaries = getListSummaries();
-
-        if (lifecycle != null) {
-            lifecycle.addObserver(this);
-        }
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-
-        mPreference = screen.findPreference(getPreferenceKey());
-
-        // Set a default value because BluetoothCodecConfig is null initially.
-        mPreference.setValue(mListValues[getDefaultIndex()]);
-        mPreference.setSummary(mListSummaries[getDefaultIndex()]);
-    }
-
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        if (mBluetoothA2dp == null) {
-            return false;
-        }
-
-        writeConfigurationValues(newValue);
-
-        final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig();
-        synchronized (mBluetoothA2dpConfigStore) {
-            BluetoothDevice activeDevice = getA2dpActiveDevice();
-            if (activeDevice == null) {
-                return false;
-            }
-            setCodecConfigPreference(activeDevice, codecConfig);
-        }
-        // Because the setting is not persisted into permanent storage, we cannot call update state
-        // here to update the preference.
-        // Instead, we just assume it was set and update the preference here.
-        final int index = mPreference.findIndexOfValue(newValue.toString());
-        // We only want to append "Streaming" if not using default
-        if (index == getDefaultIndex()) {
-            mPreference.setSummary(mListSummaries[index]);
-        } else {
-            mPreference.setSummary(
-                    mContext.getResources().getString(STREAMING_LABEL_ID, mListSummaries[index]));
-        }
-        return true;
-    }
-
-    @Override
-    public void updateState(Preference preference) {
-        BluetoothDevice activeDevice = getA2dpActiveDevice();
-        if (activeDevice == null || getCodecConfig(activeDevice) == null || mPreference == null) {
-            return;
-        }
-
-        BluetoothCodecConfig codecConfig;
-        synchronized (mBluetoothA2dpConfigStore) {
-            codecConfig = getCodecConfig(activeDevice);
-        }
-
-        final int index = getCurrentA2dpSettingIndex(codecConfig);
-        mPreference.setValue(mListValues[index]);
-
-        // We only want to append "Streaming" if not using default
-        if (index == getDefaultIndex()) {
-            mPreference.setSummary(mListSummaries[index]);
-        } else {
-            mPreference.setSummary(
-                    mContext.getResources().getString(STREAMING_LABEL_ID, mListSummaries[index]));
-        }
-
-        writeConfigurationValues(mListValues[index]);
-    }
-
-    @Override
-    public void onBluetoothServiceConnected(BluetoothA2dp bluetoothA2dp) {
-        mBluetoothA2dp = bluetoothA2dp;
-        updateState(mPreference);
-    }
-
-    @Override
-    public void onBluetoothCodecUpdated() {
-        // intentional no-op
-        // We do not want to call update state here because the setting is not persisted in
-        // permanent storage.
-    }
-
-    @Override
-    public void onBluetoothServiceDisconnected() {
-        mBluetoothA2dp = null;
-    }
-
-    @Override
-    public void onDestroy() {
-        mBluetoothA2dp = null;
-    }
-
-    /**
-     * @return an array of string values that correspond to the current {@link ListPreference}.
-     */
-    protected abstract String[] getListValues();
-
-    /**
-     * @return an array of string summaries that correspond to the current {@link ListPreference}.
-     */
-    protected abstract String[] getListSummaries();
-
-    /**
-     * Updates the new value to the {@link BluetoothA2dpConfigStore} and the {@link BluetoothA2dp}.
-     *
-     * @param newValue the new setting value
-     */
-    protected abstract void writeConfigurationValues(Object newValue);
-
-    /**
-     * @return the current selected index for the {@link ListPreference}.
-     */
-    protected abstract int getCurrentA2dpSettingIndex(BluetoothCodecConfig config);
-
-    /**
-     * @return default setting index for the {@link ListPreference}.
-     */
-    protected abstract int getDefaultIndex();
-
-    @VisibleForTesting
-    void setCodecConfigPreference(BluetoothDevice device,
-            BluetoothCodecConfig config) {
-        BluetoothDevice bluetoothDevice =
-                (device != null) ? device : getA2dpActiveDevice();
-        if (bluetoothDevice == null) {
-            return;
-        }
-        mBluetoothA2dp.setCodecConfigPreference(bluetoothDevice, config);
-    }
-
-    @VisibleForTesting
-    BluetoothCodecConfig getCodecConfig(BluetoothDevice device) {
-        if (mBluetoothA2dp != null) {
-            BluetoothDevice bluetoothDevice =
-                    (device != null) ? device : getA2dpActiveDevice();
-            if (bluetoothDevice == null) {
-                return null;
-            }
-            BluetoothCodecStatus codecStatus = mBluetoothA2dp.getCodecStatus(bluetoothDevice);
-            if (codecStatus != null) {
-                return codecStatus.getCodecConfig();
-            }
-        }
-        return null;
-    }
-
-    private BluetoothDevice getA2dpActiveDevice() {
-        if (mBluetoothAdapter == null) {
-            return null;
-        }
-        List<BluetoothDevice> activeDevices =
-                mBluetoothAdapter.getActiveDevices(BluetoothProfile.A2DP);
-        return (activeDevices.size() > 0) ? activeDevices.get(0) : null;
-    }
-}
diff --git a/src/com/android/settings/development/BluetoothA2dpConfigStore.java b/src/com/android/settings/development/BluetoothA2dpConfigStore.java
index 0fef49f..ec4ec58 100644
--- a/src/com/android/settings/development/BluetoothA2dpConfigStore.java
+++ b/src/com/android/settings/development/BluetoothA2dpConfigStore.java
@@ -16,11 +16,9 @@
 
 package com.android.settings.development;
 
-import android.annotation.FlaggedApi;
 import android.bluetooth.BluetoothCodecConfig;
 import android.bluetooth.BluetoothCodecType;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 /** Utility class for storing current Bluetooth A2DP profile values */
@@ -38,10 +36,6 @@
     private long mCodecSpecific3Value;
     private long mCodecSpecific4Value;
 
-    public void setCodecType(int codecType) {
-        mCodecTypeNative = codecType;
-    }
-
     public void setCodecType(@Nullable BluetoothCodecType codecType) {
         mCodecType = codecType;
     }
@@ -82,6 +76,7 @@
     public BluetoothCodecConfig createCodecConfig() {
         BluetoothCodecConfig.Builder builder = new BluetoothCodecConfig.Builder()
                 .setCodecPriority(mCodecPriority)
+                .setExtendedCodecType(mCodecType)
                 .setSampleRate(mSampleRate)
                 .setBitsPerSample(mBitsPerSample)
                 .setChannelMode(mChannelMode)
@@ -89,27 +84,6 @@
                 .setCodecSpecific2(mCodecSpecific2Value)
                 .setCodecSpecific3(mCodecSpecific3Value)
                 .setCodecSpecific4(mCodecSpecific4Value);
-        if (Flags.a2dpOffloadCodecExtensibilitySettings()) {
-            builder.setExtendedCodecType(mCodecType);
-        } else {
-            builder.setCodecType(mCodecTypeNative);
-        }
         return builder.build();
     }
-
-    /** Create codec config utilizing {@link BluetoothCodecType} */
-    @FlaggedApi(Flags.FLAG_A2DP_OFFLOAD_CODEC_EXTENSIBILITY_SETTINGS)
-    public @NonNull BluetoothCodecConfig createCodecConfigFromCodecType() {
-        return new BluetoothCodecConfig.Builder()
-                .setExtendedCodecType(mCodecType)
-                .setCodecPriority(mCodecPriority)
-                .setSampleRate(mSampleRate)
-                .setBitsPerSample(mBitsPerSample)
-                .setChannelMode(mChannelMode)
-                .setCodecSpecific1(mCodecSpecific1Value)
-                .setCodecSpecific2(mCodecSpecific2Value)
-                .setCodecSpecific3(mCodecSpecific3Value)
-                .setCodecSpecific4(mCodecSpecific4Value)
-                .build();
-    }
 }
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index 9c13794..de3680d 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -67,7 +67,6 @@
 import com.android.settings.development.bluetooth.AbstractBluetoothPreferenceController;
 import com.android.settings.development.bluetooth.BluetoothBitPerSampleDialogPreferenceController;
 import com.android.settings.development.bluetooth.BluetoothChannelModeDialogPreferenceController;
-import com.android.settings.development.bluetooth.BluetoothCodecDialogPreferenceController;
 import com.android.settings.development.bluetooth.BluetoothCodecListPreferenceController;
 import com.android.settings.development.bluetooth.BluetoothHDAudioPreferenceController;
 import com.android.settings.development.bluetooth.BluetoothQualityDialogPreferenceController;
@@ -813,8 +812,6 @@
         controllers.add(new AutofillCategoryController(context, lifecycle));
         controllers.add(new AutofillLoggingLevelPreferenceController(context, lifecycle));
         controllers.add(new AutofillResetOptionsPreferenceController(context));
-        controllers.add(new BluetoothCodecDialogPreferenceController(context, lifecycle,
-                bluetoothA2dpConfigStore, fragment));
         controllers.add(
                 new BluetoothCodecListPreferenceController(
                         context, lifecycle, bluetoothA2dpConfigStore, fragment));
@@ -849,8 +846,7 @@
     @Override
     public void onBluetoothCodecChanged() {
         for (AbstractPreferenceController controller : mPreferenceControllers) {
-            if (controller instanceof AbstractBluetoothDialogPreferenceController
-                    && !(controller instanceof BluetoothCodecDialogPreferenceController)) {
+            if (controller instanceof AbstractBluetoothDialogPreferenceController) {
                 ((AbstractBluetoothDialogPreferenceController) controller)
                         .onBluetoothCodecUpdated();
             }
diff --git a/src/com/android/settings/development/Enable16kPagesPreferenceController.java b/src/com/android/settings/development/Enable16kPagesPreferenceController.java
index b782788..d8ad55f 100644
--- a/src/com/android/settings/development/Enable16kPagesPreferenceController.java
+++ b/src/com/android/settings/development/Enable16kPagesPreferenceController.java
@@ -39,7 +39,7 @@
 import androidx.appcompat.app.AlertDialog;
 import androidx.core.content.ContextCompat;
 import androidx.preference.Preference;
-import androidx.preference.SwitchPreference;
+import androidx.preference.SwitchPreferenceCompat;
 
 import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
@@ -139,7 +139,7 @@
                         Settings.Global.ENABLE_16K_PAGES,
                         defaultOptionValue /* default */);
 
-        ((SwitchPreference) mPreference).setChecked(optionValue == ENABLE_16K_PAGE_SIZE);
+        ((SwitchPreferenceCompat) mPreference).setChecked(optionValue == ENABLE_16K_PAGE_SIZE);
     }
 
     @Override
@@ -150,7 +150,7 @@
                 mContext.getContentResolver(),
                 Settings.Global.ENABLE_16K_PAGES,
                 ENABLE_4K_PAGE_SIZE);
-        ((SwitchPreference) mPreference).setChecked(false);
+        ((SwitchPreferenceCompat) mPreference).setChecked(false);
     }
 
     @Override
diff --git a/src/com/android/settings/development/PageAgnosticNotificationService.java b/src/com/android/settings/development/PageAgnosticNotificationService.java
index d33f1da..c89cbc0 100644
--- a/src/com/android/settings/development/PageAgnosticNotificationService.java
+++ b/src/com/android/settings/development/PageAgnosticNotificationService.java
@@ -23,6 +23,7 @@
 import android.app.Service;
 import android.content.Intent;
 import android.os.IBinder;
+import android.os.UserHandle;
 import android.provider.Settings;
 
 import androidx.annotation.NonNull;
@@ -36,7 +37,11 @@
             "com.android.settings.development.PageAgnosticNotificationService";
     public static final String INTENT_ACTION_DISMISSED =
             "com.android.settings.development.NOTIFICATION_DISMISSED";
-    private static final int NOTIFICATION_ID = 1;
+
+    // Updating the notification ID to avoid the notification being dismissed
+    // accidentally by other notifications. ID used is the bug id where this was
+    // reported.
+    private static final int NOTIFICATION_ID = 388678898;
 
     static final int DISABLE_UPDATES_SETTING = 1;
 
@@ -144,7 +149,8 @@
     public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
         Notification notification = buildNotification();
         if (mNotificationManager != null) {
-            mNotificationManager.notify(NOTIFICATION_ID, notification);
+            mNotificationManager.notifyAsUser(null, NOTIFICATION_ID, notification,
+                    UserHandle.ALL);
         }
         return Service.START_REDELIVER_INTENT;
     }
diff --git a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java
index 04dfc79..ea90b4f 100644
--- a/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java
+++ b/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceController.java
@@ -85,6 +85,8 @@
         if (bluetoothA2dp == null) {
             return;
         }
+        // update the cache of a2dp config(mBluetoothA2dpConfigStore) before writing config.
+        initConfigStore();
         writeConfigurationValues(index);
         final BluetoothCodecConfig codecConfig = mBluetoothA2dpConfigStore.createCodecConfig();
         BluetoothDevice activeDevice = getA2dpActiveDevice();
@@ -116,7 +118,7 @@
         if (config == null) {
             return;
         }
-        mBluetoothA2dpConfigStore.setCodecType(config.getCodecType());
+        mBluetoothA2dpConfigStore.setCodecType(config.getExtendedCodecType());
         mBluetoothA2dpConfigStore.setSampleRate(config.getSampleRate());
         mBluetoothA2dpConfigStore.setBitsPerSample(config.getBitsPerSample());
         mBluetoothA2dpConfigStore.setChannelMode(config.getChannelMode());
diff --git a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreference.java b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreference.java
deleted file mode 100644
index 11cfd34..0000000
--- a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreference.java
+++ /dev/null
@@ -1,77 +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.settings.development.bluetooth;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.RadioGroup;
-
-import com.android.settings.R;
-
-/**
- * Dialog preference to set the Bluetooth A2DP config of codec
- */
-public class BluetoothCodecDialogPreference extends BaseBluetoothDialogPreference implements
-        RadioGroup.OnCheckedChangeListener {
-
-    public BluetoothCodecDialogPreference(Context context) {
-        super(context);
-        initialize(context);
-    }
-
-    public BluetoothCodecDialogPreference(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        initialize(context);
-    }
-
-    public BluetoothCodecDialogPreference(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        initialize(context);
-    }
-
-    public BluetoothCodecDialogPreference(Context context, AttributeSet attrs, int defStyleAttr,
-                                          int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-        initialize(context);
-    }
-
-    @Override
-    protected int getRadioButtonGroupId() {
-        return R.id.bluetooth_audio_codec_radio_group;
-    }
-
-    private void initialize(Context context) {
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_default);
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_sbc);
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_aac);
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_aptx);
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_aptx_hd);
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_ldac);
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_lc3);
-        mRadioButtonIds.add(R.id.bluetooth_audio_codec_opus);
-        String[] stringArray = context.getResources().getStringArray(
-                com.android.settingslib.R.array.bluetooth_a2dp_codec_titles);
-        for (int i = 0; i < stringArray.length; i++) {
-            mRadioButtonStrings.add(stringArray[i]);
-        }
-        stringArray = context.getResources()
-                .getStringArray(com.android.settingslib.R.array.bluetooth_a2dp_codec_summaries);
-        for (int i = 0; i < stringArray.length; i++) {
-            mSummaryStrings.add(stringArray[i]);
-        }
-    }
-}
diff --git a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java
deleted file mode 100644
index 6b29b8e..0000000
--- a/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceController.java
+++ /dev/null
@@ -1,207 +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.settings.development.bluetooth;
-
-import android.bluetooth.BluetoothA2dp;
-import android.bluetooth.BluetoothCodecConfig;
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.development.BluetoothA2dpConfigStore;
-import com.android.settings.development.Flags;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Dialog preference controller to set the Bluetooth A2DP config of codec
- */
-public class BluetoothCodecDialogPreferenceController extends
-        AbstractBluetoothDialogPreferenceController {
-
-    private static final String KEY = "bluetooth_audio_codec_settings";
-    private static final String TAG = "BtCodecCtr";
-
-    @Nullable private final Callback mCallback;
-
-    public BluetoothCodecDialogPreferenceController(Context context, Lifecycle lifecycle,
-                                                    BluetoothA2dpConfigStore store,
-                                                    @Nullable Callback callback) {
-        super(context, lifecycle, store);
-        mCallback = callback;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return !Flags.a2dpOffloadCodecExtensibilitySettings();
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return KEY;
-    }
-
-    @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        ((BaseBluetoothDialogPreference) mPreference).setCallback(this);
-    }
-
-    @Override
-    public List<Integer> getSelectableIndex() {
-        List<Integer> index = new ArrayList<>();
-        final BluetoothA2dp bluetoothA2dp = mBluetoothA2dp;
-
-        index.add(getDefaultIndex());
-        if (bluetoothA2dp == null) {
-            return index;
-        }
-        final BluetoothDevice activeDevice = getA2dpActiveDevice();
-        if (activeDevice == null) {
-            Log.d(TAG, "Unable to get selectable index. No Active Bluetooth device");
-            return index;
-        }
-        // Check HD audio is enabled, display the available list.
-        if (bluetoothA2dp.isOptionalCodecsEnabled(activeDevice)
-                == BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED) {
-            List<BluetoothCodecConfig> configs = getSelectableConfigs(activeDevice);
-            if (configs != null) {
-                return getIndexFromConfig(configs);
-            }
-        }
-        // If HD audio is disabled, SBC is the only one available codec.
-        index.add(convertCfgToBtnIndex(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC));
-        return index;
-    }
-
-    @Override
-    protected void writeConfigurationValues(final int index) {
-        int codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC; // default
-        int codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_DEFAULT;
-        switch (index) {
-            case 0:
-                final BluetoothDevice activeDevice = getA2dpActiveDevice();
-                codecTypeValue = getHighestCodec(mBluetoothA2dp, activeDevice,
-                        getSelectableConfigs(activeDevice));
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            case 1:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC;
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            case 2:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC;
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            case 3:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX;
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            case 4:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD;
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            case 5:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC;
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            case 6:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_LC3;
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            case 7:
-                codecTypeValue = BluetoothCodecConfig.SOURCE_CODEC_TYPE_OPUS;
-                codecPriorityValue = BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST;
-                break;
-            default:
-                break;
-        }
-        mBluetoothA2dpConfigStore.setCodecType(codecTypeValue);
-        mBluetoothA2dpConfigStore.setCodecPriority(codecPriorityValue);
-
-        // Once user changes codec, to reset configs with highest quality.
-        final BluetoothCodecConfig config = getSelectableByCodecType(codecTypeValue);
-        if (config == null) {
-            Log.d(TAG, "Selectable config is null. Unable to reset");
-        }
-        mBluetoothA2dpConfigStore.setSampleRate(getHighestSampleRate(config));
-        mBluetoothA2dpConfigStore.setBitsPerSample(getHighestBitsPerSample(config));
-        mBluetoothA2dpConfigStore.setChannelMode(getHighestChannelMode(config));
-    }
-
-    @Override
-    protected int getCurrentIndexByConfig(BluetoothCodecConfig config) {
-        if (config == null) {
-            Log.e(TAG, "Unable to get current config index. Config is null.");
-        }
-        return convertCfgToBtnIndex(config.getCodecType());
-    }
-
-    @Override
-    public void onIndexUpdated(int index) {
-        super.onIndexUpdated(index);
-        mCallback.onBluetoothCodecChanged();
-    }
-
-    @Override
-    public void onHDAudioEnabled(boolean enabled) {
-        writeConfigurationValues(/* index= */ 0);
-    }
-
-    private List<Integer> getIndexFromConfig(List<BluetoothCodecConfig> configs) {
-        List<Integer> indexArray = new ArrayList<>();
-        for (BluetoothCodecConfig config : configs) {
-            indexArray.add(convertCfgToBtnIndex(config.getCodecType()));
-        }
-        return indexArray;
-    }
-
-    @VisibleForTesting
-    int convertCfgToBtnIndex(int config) {
-        int index = getDefaultIndex();
-        switch (config) {
-            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC:
-                index = 1;
-                break;
-            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC:
-                index = 2;
-                break;
-            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX:
-                index = 3;
-                break;
-            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD:
-                index = 4;
-                break;
-            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC:
-                index = 5;
-                break;
-            case BluetoothCodecConfig.SOURCE_CODEC_TYPE_OPUS:
-                index = 7;
-                break;
-            default:
-                Log.e(TAG, "Unsupported config:" + config);
-                break;
-        }
-        return index;
-    }
-}
diff --git a/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceController.java b/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceController.java
index 72da505..11ed93c 100644
--- a/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceController.java
+++ b/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceController.java
@@ -32,7 +32,6 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.settings.development.BluetoothA2dpConfigStore;
-import com.android.settings.development.Flags;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import java.util.ArrayList;
@@ -62,9 +61,7 @@
 
     @Override
     public boolean isAvailable() {
-        boolean available = Flags.a2dpOffloadCodecExtensibilitySettings();
-        Log.d(TAG, "isAvailable: " + available);
-        return available;
+        return true;
     }
 
     @Override
@@ -80,10 +77,6 @@
 
     @Override
     public boolean onPreferenceChange(@Nullable Preference preference, @NonNull Object newValue) {
-        if (!Flags.a2dpOffloadCodecExtensibilitySettings()) {
-            return false;
-        }
-
         if (mListPreference == null) {
             Log.e(TAG, "onPreferenceChange: List preference is null");
             return false;
@@ -115,7 +108,7 @@
         }
 
         BluetoothCodecConfig codecConfig =
-                mBluetoothA2dpConfigStore.createCodecConfigFromCodecType();
+                mBluetoothA2dpConfigStore.createCodecConfig();
         Log.d(TAG, "onPreferenceChange: setCodecConfigPreference: " + codecConfig.toString());
         bluetoothA2dp.setCodecConfigPreference(activeDevice, codecConfig);
         if (mCallback != null) {
@@ -128,9 +121,6 @@
     @Override
     public void updateState(@Nullable Preference preference) {
         super.updateState(preference);
-        if (!Flags.a2dpOffloadCodecExtensibilitySettings()) {
-            return;
-        }
 
         if (!isHDAudioEnabled()) {
             Log.d(TAG, "updateState: HD Audio is disabled");
diff --git a/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java b/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java
index 076a283..0835081 100644
--- a/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java
+++ b/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceController.java
@@ -16,10 +16,13 @@
 
 package com.android.settings.development.linuxterminal;
 
+import static android.system.virtualmachine.VirtualMachineManager.CAPABILITY_NON_PROTECTED_VM;
+
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.Process;
 import android.os.storage.StorageManager;
+import android.system.virtualmachine.VirtualMachineManager;
 import android.text.TextUtils;
 import android.util.DataUnit;
 
@@ -31,8 +34,6 @@
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.development.DeveloperOptionsPreferenceController;
 
-import java.util.Objects;
-
 /** Preference controller for Linux terminal option in developers option */
 public class LinuxTerminalPreferenceController extends DeveloperOptionsPreferenceController
         implements PreferenceControllerMixin {
@@ -43,7 +44,7 @@
     static final long MEMORY_MIN_BYTES = DataUnit.GIGABYTES.toBytes(4); // 4_000_000_000
 
     @VisibleForTesting
-    static final long STORAGE_MIN_BYTES = DataUnit.GIGABYTES.toBytes(128); // 128_000_000_000
+    static final long STORAGE_MIN_BYTES = DataUnit.GIGABYTES.toBytes(64); // 64_000_000_000
 
     private static final String LINUX_TERMINAL_KEY = "linux_terminal";
 
@@ -56,11 +57,17 @@
         mTerminalPackageName =
                 isPackageInstalled(context.getPackageManager(), packageName) ? packageName : null;
 
-        StorageManager storageManager =
-                Objects.requireNonNull(context.getSystemService(StorageManager.class));
+        StorageManager storageManager = context.getSystemService(StorageManager.class);
+        VirtualMachineManager virtualMachineManager =
+                context.getSystemService(VirtualMachineManager.class);
+
         mIsDeviceCapable =
                 getTotalMemory() >= MEMORY_MIN_BYTES
-                        && storageManager.getPrimaryStorageSize() >= STORAGE_MIN_BYTES;
+                        && storageManager != null
+                        && storageManager.getPrimaryStorageSize() >= STORAGE_MIN_BYTES
+                        && virtualMachineManager != null
+                        && ((virtualMachineManager.getCapabilities() & CAPABILITY_NON_PROTECTED_VM)
+                                != 0);
     }
 
     // Avoid lazy initialization because this may be called before displayPreference().
diff --git a/src/com/android/settings/deviceinfo/OWNERS b/src/com/android/settings/deviceinfo/OWNERS
index 110402f..d206145 100644
--- a/src/com/android/settings/deviceinfo/OWNERS
+++ b/src/com/android/settings/deviceinfo/OWNERS
@@ -1,7 +1,6 @@
 # Default reviewers for this and subdirectories.
 allenwtsu@google.com
 andychou@google.com
-bonianchen@google.com
 songferngwang@google.com
 
 # Emergency approvers in case the above are not available
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
index 1ae6b40..16440b2 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java
@@ -100,8 +100,7 @@
 
         mDialog.setText(ID_PRL_VERSION_VALUE, getCdmaPrlVersion());
 
-        if ((mSubscriptionInfo != null && isCdmaLteEnabled()) ||
-                    (mSubscriptionInfo == null && isSimPresent(mSlotId))) {
+        if (isCdmaLteEnabled()) {
             // Show IMEI for LTE device
             mDialog.setText(ID_IMEI_VALUE, mTelephonyManager.getImei(mSlotId));
             mDialog.setText(ID_IMEI_SV_VALUE,
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index b5ee1d8..89f286c 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -100,11 +100,17 @@
     @VisibleForTesting
     static final int MAX_PHONE_COUNT_SINGLE_SIM = 1;
 
-    private final OnSubscriptionsChangedListener mOnSubscriptionsChangedListener =
+    @VisibleForTesting
+    final OnSubscriptionsChangedListener mOnSubscriptionsChangedListener =
             new OnSubscriptionsChangedListener() {
                 @Override
                 public void onSubscriptionsChanged() {
+                    SubscriptionInfo oldSubInfo = mSubscriptionInfo;
                     mSubscriptionInfo = getPhoneSubscriptionInfo(mSlotIndex);
+                    if (getSubId(oldSubInfo) != getSubId(mSubscriptionInfo)) {
+                      unregisterTelephonyCallback(oldSubInfo);
+                      registerTelephonyCallback(mSubscriptionInfo);
+                    }
                     updateSubscriptionStatus();
                 }
             };
@@ -123,7 +129,6 @@
     private final Context mContext;
 
     private boolean mShowLatestAreaInfo;
-    private boolean mIsRegisteredListener = false;
 
     private final BroadcastReceiver mAreaInfoReceiver = new BroadcastReceiver() {
         @Override
@@ -137,7 +142,8 @@
     };
 
     @VisibleForTesting
-    protected SimStatusDialogTelephonyCallback mTelephonyCallback;
+    protected final SimStatusDialogTelephonyCallback mTelephonyCallback =
+            new SimStatusDialogTelephonyCallback();
 
     private CellBroadcastServiceConnection mCellBroadcastServiceConnection;
 
@@ -181,8 +187,6 @@
         mContext = dialog.getContext();
         mSlotIndex = slotId;
         mSubscriptionInfo = getPhoneSubscriptionInfo(slotId);
-
-        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
         mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
         mEuiccManager = mContext.getSystemService(EuiccManager.class);
         mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
@@ -201,11 +205,13 @@
 
     public void initialize() {
         if (mSubscriptionInfo == null) {
-            return;
+            // Should not depend on default sub TelephonyManager, but lots of code already uses it
+            mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+        } else {
+            mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(mSubscriptionInfo.getSubscriptionId());
         }
-        mTelephonyManager =
-            getTelephonyManager().createForSubscriptionId(mSubscriptionInfo.getSubscriptionId());
-        mTelephonyCallback = new SimStatusDialogTelephonyCallback();
+
         updateLatestAreaInfo();
         updateSubscriptionStatus();
     }
@@ -222,6 +228,10 @@
         updateNetworkType();
         updateRoamingStatus(serviceState);
         updateIccidNumber();
+
+        if (mSubscriptionInfo == null) {
+            updateDataState(TelephonyManager.DATA_UNKNOWN);
+        }
     }
 
     /**
@@ -242,13 +252,9 @@
      */
     @Override
     public void onResume(@NonNull LifecycleOwner owner) {
-        if (mSubscriptionInfo == null) {
-            return;
-        }
-        mTelephonyManager = getTelephonyManager().createForSubscriptionId(
-                mSubscriptionInfo.getSubscriptionId());
-        getTelephonyManager()
-                .registerTelephonyCallback(mContext.getMainExecutor(), mTelephonyCallback);
+        // get the latest sub info for it may be updated in onPause/onStop status.
+        mSubscriptionInfo = getPhoneSubscriptionInfo(mSlotIndex);
+        registerTelephonyCallback(mSubscriptionInfo);
         mSubscriptionManager.addOnSubscriptionsChangedListener(
                 mContext.getMainExecutor(), mOnSubscriptionsChangedListener);
         collectSimStatusDialogInfo(owner);
@@ -259,8 +265,6 @@
                     new IntentFilter(CellBroadcastIntents.ACTION_AREA_INFO_UPDATED),
                     Context.RECEIVER_EXPORTED/*UNAUDITED*/);
         }
-
-        mIsRegisteredListener = true;
     }
 
     /**
@@ -268,22 +272,9 @@
      */
     @Override
     public void onPause(@NonNull LifecycleOwner owner) {
-        if (mSubscriptionInfo == null) {
-            if (mIsRegisteredListener) {
-                mSubscriptionManager.removeOnSubscriptionsChangedListener(
-                        mOnSubscriptionsChangedListener);
-                getTelephonyManager().unregisterTelephonyCallback(mTelephonyCallback);
-                if (mShowLatestAreaInfo) {
-                    mContext.unregisterReceiver(mAreaInfoReceiver);
-                }
-                mIsRegisteredListener = false;
-            }
-            return;
-        }
-
-        mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
-        getTelephonyManager().unregisterTelephonyCallback(mTelephonyCallback);
-
+        mSubscriptionManager.removeOnSubscriptionsChangedListener(
+                mOnSubscriptionsChangedListener);
+        unregisterTelephonyCallback(mSubscriptionInfo);
         if (mShowLatestAreaInfo) {
             mContext.unregisterReceiver(mAreaInfoReceiver);
         }
@@ -555,6 +546,34 @@
         return SubscriptionManager.from(mContext).getActiveSubscriptionInfoForSimSlotIndex(slotId);
     }
 
+    private void registerTelephonyCallback(SubscriptionInfo subInfo) {
+        if (subInfo == null) {
+            return;
+        }
+
+        // No need to have a member to hold mTelephonyManager, leaving it as lots of code
+        // depending on it
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(subInfo.getSubscriptionId());
+        mTelephonyManager.registerTelephonyCallback(
+                mContext.getMainExecutor(), mTelephonyCallback);
+    }
+
+    private void unregisterTelephonyCallback(SubscriptionInfo subInfo) {
+        if (subInfo == null) {
+          return;
+        }
+
+        mContext.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(subInfo.getSubscriptionId())
+                .unregisterTelephonyCallback(mTelephonyCallback);
+    }
+
+    private int getSubId(SubscriptionInfo subInfo) {
+        return subInfo == null ? SubscriptionManager.INVALID_SUBSCRIPTION_ID :
+                subInfo.getSubscriptionId();
+    }
+
     @VisibleForTesting
     class SimStatusDialogTelephonyCallback extends TelephonyCallback implements
             TelephonyCallback.DataConnectionStateListener,
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java
index 8580f6e..218e035 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java
@@ -49,7 +49,7 @@
         implements OnPreferenceChangeListener, OnSeekBarChangeListener {
 
     public static final int MAX_SEEKBAR_VALUE = 15;
-    public static final int MIN_SEEKBAR_VALUE = 2;
+    public static final int MIN_SEEKBAR_VALUE = 4;
     public static final String KEY_BATTERY_SAVER_SEEK_BAR = "battery_saver_seek_bar";
     private static final int LEVEL_UNIT_SCALE = 5;
 
diff --git a/src/com/android/settings/fuelgauge/protos/OWNERS b/src/com/android/settings/fuelgauge/protos/OWNERS
index b861481c..efd59bf 100644
--- a/src/com/android/settings/fuelgauge/protos/OWNERS
+++ b/src/com/android/settings/fuelgauge/protos/OWNERS
@@ -1,3 +1,2 @@
-clairewang@google.com
 xuezaiyue@google.com
-ykhung@google.com
\ No newline at end of file
+ykhung@google.com
diff --git a/src/com/android/settings/location/OWNERS b/src/com/android/settings/location/OWNERS
index 5feda77..4509725 100644
--- a/src/com/android/settings/location/OWNERS
+++ b/src/com/android/settings/location/OWNERS
@@ -2,9 +2,8 @@
 asalo@google.com
 lifu@google.com
 mstogaitis@google.com
-palanki@google.com
 sooniln@google.com
 weiwa@google.com
 wyattriley@google.com
 
-# Emergency approvers in case the above are not available
\ No newline at end of file
+# Emergency approvers in case the above are not available
diff --git a/src/com/android/settings/network/MobileNetworkRepository.java b/src/com/android/settings/network/MobileNetworkRepository.java
index f5763eb..e7642f4 100644
--- a/src/com/android/settings/network/MobileNetworkRepository.java
+++ b/src/com/android/settings/network/MobileNetworkRepository.java
@@ -54,6 +54,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -345,6 +346,7 @@
             List<SubscriptionInfoEntity> availableSubInfoEntityList) {
         List<SubscriptionInfoEntity> activeSubInfoEntityList =
                 availableSubInfoEntityList.stream()
+                .filter(entity -> Objects.nonNull(entity))
                 .filter(SubscriptionInfoEntity::isActiveSubscription)
                 .filter(SubscriptionInfoEntity::isSubscriptionVisible)
                 .collect(Collectors.toList());
diff --git a/src/com/android/settings/network/OWNERS b/src/com/android/settings/network/OWNERS
index a63a825..ad3c9da 100644
--- a/src/com/android/settings/network/OWNERS
+++ b/src/com/android/settings/network/OWNERS
@@ -1,12 +1,8 @@
 # Default reviewers for this and subdirectories.
-allenwtsu@google.com
-andychou@google.com
-bonianchen@google.com
-changbetty@google.com
-leechou@google.com
+chaohuiw@google.com
+evanwu@google.com
 songferngwang@google.com
 tomhsu@google.com
 wengsu@google.com
-zoeychen@google.com
 
 # Emergency approvers in case the above are not available
diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
index d1988c4..62edbf8 100644
--- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
+++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java
@@ -107,8 +107,8 @@
         }
 
         final PersistableBundle carrierConfig = getCarrierConfigForSubId(subId);
-        if ((carrierConfig == null)
-                || carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) {
+        if (!CarrierConfigManager.isConfigForIdentifiedCarrier(carrierConfig) ||
+                carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) {
             return CONDITIONALLY_UNAVAILABLE;
         }
 
diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
index ebc5575..c4eaf76 100644
--- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
+++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
@@ -167,7 +167,8 @@
                 info, getContext());
         mNameView.setText(displayName);
         if (!TextUtils.isEmpty(displayName)) {
-            mNameView.setSelection(displayName.length());
+            mNameView.setSelection(Math.min(displayName.length(),
+                    getResources().getInteger(R.integer.sim_label_max_length)));
         }
 
         mColorSpinner = view.findViewById(R.id.color_spinner);
@@ -176,7 +177,7 @@
         mColorSpinner.setAdapter(adapter);
         mColorSpinner.setSelection(getSimColorIndex(info.getIconTint()));
 
-        if(Flags.isDualSimOnboardingEnabled()){
+        if (Flags.isDualSimOnboardingEnabled()) {
             return;
         }
 
@@ -293,10 +294,10 @@
     }
 
     /*
-    * Get the color index from previous color that defined in Android OS
-    * (frameworks/base/core/res/res/values/arrays.xml). If can't find the color, continue to look
-    * for it in the new color plattee. If not, give it the first index.
-    */
+     * Get the color index from previous color that defined in Android OS
+     * (frameworks/base/core/res/res/values/arrays.xml). If can't find the color, continue to look
+     * for it in the new color plattee. If not, give it the first index.
+     */
 
     private int getSimColorIndex(int color) {
         int index = -1;
diff --git a/src/com/android/settings/nfc/OWNERS b/src/com/android/settings/nfc/OWNERS
index 2f73a10..55c4945 100644
--- a/src/com/android/settings/nfc/OWNERS
+++ b/src/com/android/settings/nfc/OWNERS
@@ -4,4 +4,3 @@
 georgekgchang@google.com
 
 # Emergency approvers in case the above are not available
-zachoverflow@google.com
diff --git a/src/com/android/settings/notification/OWNERS b/src/com/android/settings/notification/OWNERS
index 29484c6..424e6cc 100644
--- a/src/com/android/settings/notification/OWNERS
+++ b/src/com/android/settings/notification/OWNERS
@@ -1,7 +1,6 @@
 # Default reviewers for this and subdirectories.
-aroederer@google.com
 beverlyt@google.com
 dsandler@android.com
 juliacr@google.com
 matiashe@google.com
-yurilin@google.com
\ No newline at end of file
+yurilin@google.com
diff --git a/src/com/android/settings/password/OWNERS b/src/com/android/settings/password/OWNERS
index 9cfaf7a..9e403d3 100644
--- a/src/com/android/settings/password/OWNERS
+++ b/src/com/android/settings/password/OWNERS
@@ -2,10 +2,8 @@
 set noparent
 
 # Default reviewers for this and subdirectories.
-curtislb@google.com
 graciecheng@google.com
 ilyamaty@google.com
-jaggies@google.com
 jbolinger@google.com
 joshmccloskey@google.com
 kchyn@google.com
diff --git a/src/com/android/settings/privatespace/OWNERS b/src/com/android/settings/privatespace/OWNERS
index 158c26a..a22bb0c 100644
--- a/src/com/android/settings/privatespace/OWNERS
+++ b/src/com/android/settings/privatespace/OWNERS
@@ -8,4 +8,3 @@
 jigarthakkar@google.com
 josephpv@google.com
 onshimiye@google.com
-saumyap@google.com
diff --git a/src/com/android/settings/sim/OWNERS b/src/com/android/settings/sim/OWNERS
index 110402f..d206145 100644
--- a/src/com/android/settings/sim/OWNERS
+++ b/src/com/android/settings/sim/OWNERS
@@ -1,7 +1,6 @@
 # Default reviewers for this and subdirectories.
 allenwtsu@google.com
 andychou@google.com
-bonianchen@google.com
 songferngwang@google.com
 
 # Emergency approvers in case the above are not available
diff --git a/src/com/android/settings/vpn2/OWNERS b/src/com/android/settings/vpn2/OWNERS
index 4135645..919c56e 100644
--- a/src/com/android/settings/vpn2/OWNERS
+++ b/src/com/android/settings/vpn2/OWNERS
@@ -1,13 +1,7 @@
 # People who can approve changes for submission.
-jchalard@google.com
-lorenzo@google.com
-maze@google.com
-reminv@google.com
+file:platform/packages/modules/Connectivity:main:/OWNERS_core_networking_xts
 xiaom@google.com
 hughchen@google.com
 robertluo@google.com
 timhypeng@google.com
 vincentwei@google.com
-
-# Emergency approvers in case the above are not available
-satk@google.com
diff --git a/src/com/android/settings/wifi/OWNERS b/src/com/android/settings/wifi/OWNERS
index ef870f0..acefc8d 100644
--- a/src/com/android/settings/wifi/OWNERS
+++ b/src/com/android/settings/wifi/OWNERS
@@ -1,6 +1,5 @@
 # Default reviewers for this and subdirectories.
 andychou@google.com
-arcwang@google.com
 changbetty@google.com
 songferngwang@google.com
 wengsu@google.com
diff --git a/src/com/android/settings/wifi/calling/OWNERS b/src/com/android/settings/wifi/calling/OWNERS
index 87e5fcc..fc903a3 100644
--- a/src/com/android/settings/wifi/calling/OWNERS
+++ b/src/com/android/settings/wifi/calling/OWNERS
@@ -1,7 +1,6 @@
 # Default reviewers for this and subdirectories.
 allenwtsu@google.com
 andychou@google.com
-bonianchen@google.com
 leechou@google.com
 songferngwang@google.com
 tomhsu@google.com
diff --git a/tests/Enable16KbTests/OWNERS b/tests/Enable16KbTests/OWNERS
new file mode 100644
index 0000000..b968096
--- /dev/null
+++ b/tests/Enable16KbTests/OWNERS
@@ -0,0 +1,2 @@
+smoreland@google.com
+waghpawan@google.com
\ No newline at end of file
diff --git a/tests/Enable16KbTests/src/com/android/test/Enable16KbTest.java b/tests/Enable16KbTests/src/com/android/test/Enable16KbTest.java
index e4ebdef..75e29a1 100644
--- a/tests/Enable16KbTests/src/com/android/test/Enable16KbTest.java
+++ b/tests/Enable16KbTests/src/com/android/test/Enable16KbTest.java
@@ -48,13 +48,21 @@
     private static final String SWITCH_TO_4KB = "enable16k_switchTo4Kb";
     private static final String DISABLE_DEV_OPTION = "enable16k_disableDeveloperOption";
 
+    private static final int DEVICE_WAIT_TIMEOUT = 120000;
+    private static final int DEVICE_UPDATE_TIMEOUT = 180000;
+
     @Test
     @AppModeFull
     public void enable16KbToggle() throws Exception {
-        assertTrue(isPackageInstalled(APP_PACKAGE));
+        // Wait for 2 minutes for device to be online
+        prepareDevice();
+        if (!isPackageInstalled(APP_PACKAGE)) {
+            //If test app has failed for some reason, retry installation
+            installTestApp();
+        }
 
         // Check if developer option is enabled otherwise exit
-        getDevice().enableAdbRoot();
+        prepareDevice();
         String result = getDevice().getProperty("ro.product.build.16k_page.enabled");
         assumeTrue("true".equals(result));
 
@@ -67,8 +75,6 @@
 
         // Enables developer option and switch to ext4
         runTestAndWait(SWITCH_TO_EXT4);
-
-        getDevice().enableAdbRoot();
         getDevice().executeShellCommand("am start -a com.android.setupwizard.FOUR_CORNER_EXIT");
         assertTrue(verifyExt4());
 
@@ -76,13 +82,11 @@
         installTestApp();
 
         // Enable developer option and switch to 16kb kernel and Check page size
-        getDevice().enableAdbRoot();
         runTestAndWait(SWITCH_TO_16KB);
         result = getDevice().executeShellCommand("getconf PAGE_SIZE");
         assertEquals("16384", result.strip());
 
         // switch back to 4kb kernel and check page size
-        getDevice().enableAdbRoot();
         runTestAndWait(SWITCH_TO_4KB);
         result = getDevice().executeShellCommand("getconf PAGE_SIZE");
         assertEquals("4096", result.strip());
@@ -100,11 +104,23 @@
     }
 
     private void runTestAndWait(String testMethodName) throws Exception {
+        prepareDevice();
         runDeviceTests(APP_PACKAGE, APP_PACKAGE + "." + TEST_NAME, testMethodName);
         // Device is either formatting or applying update. It usually takes 3 minutes to boot.
-        RunUtil.getDefault().sleep(180000);
-        // Wait for 2 mins device to be online againg
-        getDevice().waitForDeviceOnline(120000);
+        RunUtil.getDefault().sleep(DEVICE_UPDATE_TIMEOUT);
+
+        // make sure it is available again after the test
+        prepareDevice();
+    }
+
+    private void prepareDevice() throws Exception {
+        // Verify that device is online before running test and enable root
+        getDevice().waitForDeviceOnline(DEVICE_WAIT_TIMEOUT);
+        getDevice().enableAdbRoot();
+        getDevice().waitForDeviceOnline(DEVICE_WAIT_TIMEOUT);
+
+        getDevice().executeShellCommand("input keyevent KEYCODE_WAKEUP");
+        getDevice().executeShellCommand("wm dismiss-keyguard");
     }
 
     private boolean verifyExt4() throws Exception {
diff --git a/tests/Enable16KbTests/test_16kb_app/src/com/android/settings/development/test/Enable16KbDeviceTest.java b/tests/Enable16KbTests/test_16kb_app/src/com/android/settings/development/test/Enable16KbDeviceTest.java
index 9e489cf..b84a99f 100644
--- a/tests/Enable16KbTests/test_16kb_app/src/com/android/settings/development/test/Enable16KbDeviceTest.java
+++ b/tests/Enable16KbTests/test_16kb_app/src/com/android/settings/development/test/Enable16KbDeviceTest.java
@@ -37,21 +37,23 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.Locale;
+
 @RunWith(AndroidJUnit4.class)
 public class Enable16KbDeviceTest {
     private static final long TIMEOUT = 2000;
 
-    private static final String ENABLE_16K_TOGGLE = "Boot with 16KB page size";
+    private static final String ENABLE_16K_TOGGLE = "Boot with 16 KB page size";
     private static final String BUILD_NUMBER = "Build number";
     private static final String USE_DEVELOPER_OPTIONS = "Use developer options";
     private static final String EXT4_CONFIRMATION = "Erase all data";
-    private static final String EXT4_TITLE = "Reformat device to ext4? (required for 16KB mode)";
-    private static final String TOGGLE_16K_TITLE = "Switch from 4KB mode to 16KB mode";
-    private static final String TOGGLE_4K_TITLE = "Switch from 16KB mode to 4KB mode";
+    private static final String EXT4_TITLE = "Reformat device to ext4? (required for 16 KB mode)";
+    private static final String TOGGLE_16K_TITLE = "Switch from 4 KB mode to 16 KB mode";
+    private static final String TOGGLE_4K_TITLE = "Switch from 16 KB mode to 4 KB mode";
     private static final String ANDROID_WIDGET_SCROLLVIEW = "android.widget.ScrollView";
     private static final String OKAY = "OK";
-    private static final String NOTIFICATION_TITLE_4K = "Using 4KB page-agnostic mode";
-    private static final String NOTIFICATION_TITLE_16K = "Using 16KB page-agnostic mode";
+    private static final String NOTIFICATION_TITLE_4K = "Using 4 KB page-agnostic mode";
+    private static final String NOTIFICATION_TITLE_16K = "Using 16 KB page-agnostic mode";
 
     private Context mContext;
     private UiDevice mDevice;
@@ -92,7 +94,15 @@
         // Verify that ext4 toggle is visible
         verifyTextOnScreen(EXT4_TITLE);
 
-        mDevice.wait(Until.findObject(By.text(EXT4_CONFIRMATION)), TIMEOUT).click();
+        UiObject2 confirmationObject =
+            mDevice.wait(Until.findObject(By.text(EXT4_CONFIRMATION)), TIMEOUT);
+        if (confirmationObject == null) {
+            // Workaround for (b/390535191). AOSP targets display the string in all caps.
+            confirmationObject = mDevice.wait(
+                Until.findObject(By.text(EXT4_CONFIRMATION.toUpperCase(Locale.ROOT))), TIMEOUT);
+        }
+        assertTrue(confirmationObject != null);
+        confirmationObject.click();
     }
 
     @Test
diff --git a/tests/robotests/Android.bp b/tests/robotests/Android.bp
index 1cac363..935c687 100644
--- a/tests/robotests/Android.bp
+++ b/tests/robotests/Android.bp
@@ -81,6 +81,7 @@
 
     libs: [
         "android.test.mock.impl",
+        "framework-virtualization.stubs.system",
         "ims-common",
     ],
 
@@ -102,8 +103,6 @@
         "SettingsLib-search",
     ],
 
-    upstream: true,
-
     strict_mode: false,
 }
 
@@ -114,7 +113,7 @@
         "testutils/**/*.kt",
     ],
     libs: [
-        "Robolectric_all-target_upstream",
+        "Robolectric_all-target",
         "Settings-core",
         "mockito-robolectric-prebuilt",
         "truth",
diff --git a/tests/robotests/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceControllerTest.java
deleted file mode 100644
index 783c2ed..0000000
--- a/tests/robotests/src/com/android/settings/development/AbstractBluetoothA2dpPreferenceControllerTest.java
+++ /dev/null
@@ -1,161 +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.settings.development;
-
-import static com.android.settings.development.AbstractBluetoothA2dpPreferenceController
-        .STREAMING_LABEL_ID;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothA2dp;
-import android.bluetooth.BluetoothCodecConfig;
-import android.content.Context;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.ListPreference;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-import org.junit.Before;
-import org.junit.Ignore;
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class AbstractBluetoothA2dpPreferenceControllerTest {
-
-    @Mock
-    private BluetoothA2dp mBluetoothA2dp;
-    @Mock
-    private BluetoothCodecConfig mBluetoothCodecConfig;
-    @Mock
-    private ListPreference mPreference;
-    @Mock
-    private PreferenceScreen mScreen;
-    @Mock
-    private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
-
-    private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
-    private Context mContext;
-    private AbstractBluetoothA2dpPreferenceController mController;
-
-    @Before
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        mController = spy(new AbstractBluetoothA2dpPreferenceControllerImpl(mContext, mLifecycle,
-                mBluetoothA2dpConfigStore));
-        mController.mBluetoothAdapter = null;
-        doReturn(mBluetoothCodecConfig).when(mController).getCodecConfig(null);
-        doNothing().when(mController).setCodecConfigPreference(any(), any());
-        when(mBluetoothA2dpConfigStore.createCodecConfig()).thenReturn(mBluetoothCodecConfig);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
-        mController.displayPreference(mScreen);
-    }
-
-    @Test
-    @Ignore
-    public void onPreferenceChange_bluetoothConnected_shouldUpdateCodec() {
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-
-        mController.onPreferenceChange(mPreference, "" /* new value */);
-
-        verify(mController).setCodecConfigPreference(any(), any());
-    }
-
-    @Test
-    public void onPreferenceChange_bluetoothNotConnected_shouldNotUpdateCodec() {
-        mController.onBluetoothServiceDisconnected();
-
-        mController.onPreferenceChange(mPreference, "" /* new value */);
-
-        verify(mController, never()).setCodecConfigPreference(any(), any());
-    }
-
-    @Test
-    @Ignore
-    public void updateState_option2Set_shouldUpdateToOption2() {
-        when(mBluetoothCodecConfig.getSampleRate()).thenReturn(
-                BluetoothCodecConfig.SAMPLE_RATE_48000);
-
-        doReturn(2).when(mController).getCurrentA2dpSettingIndex(any());
-        mController.updateState(mPreference);
-
-        verify(mPreference).setValue(mController.getListValues()[2]);
-        verify(mPreference).setSummary(mContext.getString(STREAMING_LABEL_ID,
-            mController.getListSummaries()[2]));
-    }
-
-    @Test
-    public void onBluetoothServiceConnected_shouldUpdateState() {
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-
-        verify(mController).updateState(mPreference);
-    }
-
-    private static class AbstractBluetoothA2dpPreferenceControllerImpl
-        extends AbstractBluetoothA2dpPreferenceController {
-
-        private AbstractBluetoothA2dpPreferenceControllerImpl(Context context,
-                Lifecycle lifecycle, BluetoothA2dpConfigStore store) {
-            super(context, lifecycle, store);
-        }
-
-        @Override
-        public String getPreferenceKey() {
-            return null;
-        }
-
-        @Override
-        protected String[] getListValues() {
-            return new String[]{"1", "2", "3"};
-        }
-
-        @Override
-        protected String[] getListSummaries() {
-            return new String[]{"foo", "bar", "foobar"};
-        }
-
-        @Override
-        protected void writeConfigurationValues(Object newValue) {
-        }
-
-        @Override
-        protected int getCurrentA2dpSettingIndex(BluetoothCodecConfig config) {
-            return 0;
-        }
-
-        @Override
-        protected int getDefaultIndex() {
-            return 0;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java
index 42b889c..9825c99 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/AbstractBluetoothDialogPreferenceControllerTest.java
@@ -220,7 +220,7 @@
             mActiveDevice)).thenReturn(mCodecStatus);
         mController.onBluetoothServiceConnected(mBluetoothA2dp);
 
-        verify(mBluetoothA2dpConfigStore).setCodecType(mCodecConfigAAC.getCodecType());
+        verify(mBluetoothA2dpConfigStore).setCodecType(mCodecConfigAAC.getExtendedCodecType());
         verify(mBluetoothA2dpConfigStore).setSampleRate(mCodecConfigAAC.getSampleRate());
         verify(mBluetoothA2dpConfigStore).setBitsPerSample(mCodecConfigAAC.getBitsPerSample());
         verify(mBluetoothA2dpConfigStore).setChannelMode(mCodecConfigAAC.getChannelMode());
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
deleted file mode 100644
index de2b363..0000000
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceControllerTest.java
+++ /dev/null
@@ -1,279 +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.settings.development.bluetooth;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothA2dp;
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothCodecConfig;
-import android.bluetooth.BluetoothCodecStatus;
-import android.bluetooth.BluetoothDevice;
-import android.bluetooth.BluetoothProfile;
-import android.content.Context;
-
-import androidx.lifecycle.LifecycleOwner;
-import androidx.preference.PreferenceScreen;
-
-import com.android.settings.development.BluetoothA2dpConfigStore;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-
-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;
-
-import java.util.Arrays;
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class BluetoothCodecDialogPreferenceControllerTest {
-
-    private static final String DEVICE_ADDRESS = "00:11:22:33:44:55";
-
-    @Mock
-    private BluetoothA2dp mBluetoothA2dp;
-    @Mock
-    private BluetoothAdapter mBluetoothAdapter;
-    @Mock
-    private PreferenceScreen mScreen;
-    @Mock
-    private AbstractBluetoothPreferenceController.Callback mCallback;
-
-    private BluetoothCodecDialogPreferenceController mController;
-    private BluetoothCodecDialogPreference mPreference;
-    private BluetoothA2dpConfigStore mBluetoothA2dpConfigStore;
-    private BluetoothCodecStatus mCodecStatus;
-    private BluetoothCodecConfig mCodecConfigAAC;
-    private BluetoothCodecConfig mCodecConfigSBC;
-    private BluetoothCodecConfig mCodecConfigAPTX;
-    private BluetoothCodecConfig mCodecConfigAPTXHD;
-    private BluetoothCodecConfig mCodecConfigLDAC;
-    private BluetoothCodecConfig mCodecConfigOPUS;
-    private BluetoothDevice mActiveDevice;
-    private Context mContext;
-    private LifecycleOwner mLifecycleOwner;
-    private Lifecycle mLifecycle;
-
-
-    @Before
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mLifecycleOwner = () -> mLifecycle;
-        mLifecycle = new Lifecycle(mLifecycleOwner);
-        mBluetoothA2dpConfigStore = spy(new BluetoothA2dpConfigStore());
-        mActiveDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(DEVICE_ADDRESS);
-        mController = new BluetoothCodecDialogPreferenceController(mContext, mLifecycle,
-                mBluetoothA2dpConfigStore, mCallback);
-        mController.mBluetoothAdapter = mBluetoothAdapter;
-        mPreference = new BluetoothCodecDialogPreference(mContext);
-        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
-        mController.displayPreference(mScreen);
-        mCodecConfigSBC = new BluetoothCodecConfig.Builder()
-                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC)
-                .setCodecPriority(BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST)
-                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_96000
-                        | BluetoothCodecConfig.SAMPLE_RATE_176400)
-                .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_32)
-                .setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_MONO
-                        | BluetoothCodecConfig.CHANNEL_MODE_STEREO)
-                .build();
-        mCodecConfigAAC = new BluetoothCodecConfig.Builder()
-                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC)
-                .setCodecPriority(BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST)
-                .setSampleRate(BluetoothCodecConfig.SAMPLE_RATE_48000
-                        | BluetoothCodecConfig.SAMPLE_RATE_88200)
-                .setBitsPerSample(BluetoothCodecConfig.BITS_PER_SAMPLE_16
-                        | BluetoothCodecConfig.BITS_PER_SAMPLE_24)
-                .setChannelMode(BluetoothCodecConfig.CHANNEL_MODE_STEREO)
-                .build();
-        mCodecConfigAPTX = new BluetoothCodecConfig.Builder()
-                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX)
-                .build();
-        mCodecConfigAPTXHD = new BluetoothCodecConfig.Builder()
-                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD)
-                .build();
-        mCodecConfigLDAC = new BluetoothCodecConfig.Builder()
-                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC)
-                .build();
-        mCodecConfigOPUS = new BluetoothCodecConfig.Builder()
-                .setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_OPUS)
-                .build();
-        when(mBluetoothAdapter.getActiveDevices(eq(BluetoothProfile.A2DP)))
-                .thenReturn(Arrays.asList(mActiveDevice));
-    }
-
-    @Test
-    public void writeConfigurationValues_selectDefault_setHighest() {
-        BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigOPUS, mCodecConfigAAC,
-                                                mCodecConfigSBC};
-        mCodecStatus = new BluetoothCodecStatus.Builder()
-                .setCodecConfig(mCodecConfigSBC)
-                .setCodecsSelectableCapabilities(Arrays.asList(mCodecConfigs))
-                .build();
-        when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
-        when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
-                BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED);
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-
-        mController.writeConfigurationValues(0);
-        verify(mBluetoothA2dpConfigStore).setCodecType(
-                BluetoothCodecConfig.SOURCE_CODEC_TYPE_OPUS);
-    }
-
-    @Test
-    public void writeConfigurationValues_checkCodec() {
-        BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigOPUS, mCodecConfigAAC,
-                mCodecConfigSBC, mCodecConfigAPTX, mCodecConfigAPTXHD, mCodecConfigLDAC};
-        mCodecStatus = new BluetoothCodecStatus.Builder()
-                .setCodecConfig(mCodecConfigSBC)
-                .setCodecsSelectableCapabilities(Arrays.asList(mCodecConfigs))
-                .build();
-        when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-
-        mController.writeConfigurationValues(1);
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setCodecType(
-                BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC);
-
-        mController.writeConfigurationValues(2);
-        verify(mBluetoothA2dpConfigStore).setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC);
-
-        mController.writeConfigurationValues(3);
-        verify(mBluetoothA2dpConfigStore).setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX);
-
-        mController.writeConfigurationValues(4);
-        verify(mBluetoothA2dpConfigStore).setCodecType(
-                BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD);
-
-        mController.writeConfigurationValues(5);
-        verify(mBluetoothA2dpConfigStore).setCodecType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC);
-
-        mController.writeConfigurationValues(7);
-        verify(mBluetoothA2dpConfigStore).setCodecType(
-                BluetoothCodecConfig.SOURCE_CODEC_TYPE_OPUS);
-    }
-
-    @Test
-    public void writeConfigurationValues_resetHighestConfig() {
-        BluetoothCodecConfig[] mCodecConfigs = {mCodecConfigAAC, mCodecConfigSBC, mCodecConfigAPTX,
-                mCodecConfigAPTXHD, mCodecConfigLDAC, mCodecConfigOPUS};
-        mCodecStatus = new BluetoothCodecStatus.Builder()
-                .setCodecConfig(mCodecConfigAAC)
-                .setCodecsSelectableCapabilities(Arrays.asList(mCodecConfigs))
-                .build();
-        when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-        mController.writeConfigurationValues(2);
-
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setCodecPriority(
-                BluetoothCodecConfig.CODEC_PRIORITY_HIGHEST);
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setSampleRate(
-                BluetoothCodecConfig.SAMPLE_RATE_88200);
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setBitsPerSample(
-                BluetoothCodecConfig.BITS_PER_SAMPLE_24);
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setChannelMode(
-                BluetoothCodecConfig.CHANNEL_MODE_STEREO);
-    }
-
-    @Test
-    public void getCurrentIndexByConfig_verifyIndex() {
-        assertThat(mController.getCurrentIndexByConfig(mCodecConfigAAC)).isEqualTo(
-                mController.convertCfgToBtnIndex(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC));
-    }
-
-    @Test
-    public void getCurrentIndexByConfig_verifyOpusIndex() {
-        assertThat(mController.getCurrentIndexByConfig(mCodecConfigOPUS)).isEqualTo(
-                mController.convertCfgToBtnIndex(
-                    BluetoothCodecConfig.SOURCE_CODEC_TYPE_OPUS));
-    }
-
-
-    @Test
-    public void onIndexUpdated_notifyPreference() {
-        mController.onIndexUpdated(0);
-
-        verify(mCallback).onBluetoothCodecChanged();
-    }
-
-    @Test
-    public void onHDAudioEnabled_optionalCodecEnabled_setsCodecTypeAsOpus() {
-        List<BluetoothCodecConfig> mCodecConfigs = Arrays.asList(mCodecConfigOPUS,
-                                                   mCodecConfigAAC, mCodecConfigSBC);
-        mCodecStatus = new BluetoothCodecStatus.Builder()
-                .setCodecConfig(mCodecConfigOPUS)
-                .setCodecsSelectableCapabilities(mCodecConfigs)
-                .build();
-        when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
-        when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
-                BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED);
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-
-        mController.onHDAudioEnabled(/* enabled= */ true);
-
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setCodecType(
-                eq(BluetoothCodecConfig.SOURCE_CODEC_TYPE_OPUS));
-    }
-
-    @Test
-    public void onHDAudioEnabled_optionalCodecEnabled_setsCodecTypeAsAAC() {
-        List<BluetoothCodecConfig> mCodecConfigs = Arrays.asList(mCodecConfigOPUS,
-                                                   mCodecConfigAAC, mCodecConfigSBC);
-        mCodecStatus = new BluetoothCodecStatus.Builder()
-                .setCodecConfig(mCodecConfigAAC)
-                .setCodecsSelectableCapabilities(mCodecConfigs)
-                .build();
-        when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
-        when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
-                BluetoothA2dp.OPTIONAL_CODECS_PREF_ENABLED);
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-
-        mController.onHDAudioEnabled(/* enabled= */ true);
-
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setCodecType(
-                eq(BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC));
-    }
-    @Test
-    public void onHDAudioEnabled_optionalCodecDisabled_setsCodecTypeAsSBC() {
-        List<BluetoothCodecConfig> mCodecConfigs = Arrays.asList(mCodecConfigOPUS,
-                                                   mCodecConfigAAC, mCodecConfigSBC);
-        mCodecStatus = new BluetoothCodecStatus.Builder()
-                .setCodecConfig(mCodecConfigAAC)
-                .setCodecsSelectableCapabilities(mCodecConfigs)
-                .build();
-        when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
-        when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice)).thenReturn(
-                BluetoothA2dp.OPTIONAL_CODECS_PREF_DISABLED);
-        mController.onBluetoothServiceConnected(mBluetoothA2dp);
-
-        mController.onHDAudioEnabled(/* enabled= */ false);
-
-        verify(mBluetoothA2dpConfigStore, atLeastOnce()).setCodecType(
-                eq(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC));
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceTest.java
deleted file mode 100644
index 4b8df16..0000000
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecDialogPreferenceTest.java
+++ /dev/null
@@ -1,50 +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.settings.development.bluetooth;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.Context;
-
-import com.android.settings.R;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class BluetoothCodecDialogPreferenceTest {
-
-    private BluetoothCodecDialogPreference mPreference;
-    private Context mContext;
-
-    @Before
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-        mContext = RuntimeEnvironment.application;
-        mPreference = new BluetoothCodecDialogPreference(mContext);
-    }
-
-    @Test
-    public void getRadioButtonGroupId() {
-        assertThat(mPreference.getRadioButtonGroupId())
-                .isEqualTo(R.id.bluetooth_audio_codec_radio_group);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceControllerTest.java
index 4ac5dff..a99dc2b 100644
--- a/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/bluetooth/BluetoothCodecListPreferenceControllerTest.java
@@ -18,7 +18,6 @@
 
 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.assertTrue;
 import static org.mockito.Mockito.atLeastOnce;
@@ -35,14 +34,12 @@
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothProfile;
 import android.content.Context;
-import android.platform.test.annotations.EnableFlags;
 
 import androidx.lifecycle.LifecycleOwner;
 import androidx.preference.ListPreference;
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.development.BluetoothA2dpConfigStore;
-import com.android.settings.development.Flags;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
 import org.junit.Before;
@@ -73,6 +70,7 @@
     private BluetoothCodecType mCodecTypeAAC;
     private BluetoothCodecType mCodecTypeSBC;
     private BluetoothCodecType mCodecTypeAPTX;
+    private BluetoothCodecType mCodecTypeAPTXHD;
     private BluetoothCodecType mCodecTypeLDAC;
     private BluetoothCodecType mCodecTypeOPUS;
     private List<BluetoothCodecType> mCodecTypes;
@@ -114,6 +112,8 @@
                 BluetoothCodecType.createFromType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC);
         mCodecTypeAPTX =
                 BluetoothCodecType.createFromType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX);
+        mCodecTypeAPTXHD =
+                BluetoothCodecType.createFromType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD);
         mCodecTypeLDAC =
                 BluetoothCodecType.createFromType(BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC);
         mCodecTypeOPUS =
@@ -125,6 +125,7 @@
                         mCodecTypeSBC,
                         mCodecTypeAAC,
                         mCodecTypeAPTX,
+                        mCodecTypeAPTXHD,
                         mCodecTypeLDAC,
                         mCodecTypeOPUS));
 
@@ -213,6 +214,11 @@
         verify(mBluetoothA2dpConfigStore).setCodecType(mCodecTypeAPTX);
 
         assertTrue(
+                mController.writeConfigurationValues(String.valueOf(
+                        mCodecTypeAPTXHD.getCodecId())));
+        verify(mBluetoothA2dpConfigStore).setCodecType(mCodecTypeAPTXHD);
+
+        assertTrue(
                 mController.writeConfigurationValues(String.valueOf(mCodecTypeLDAC.getCodecId())));
         verify(mBluetoothA2dpConfigStore).setCodecType(mCodecTypeLDAC);
 
@@ -244,7 +250,6 @@
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_A2DP_OFFLOAD_CODEC_EXTENSIBILITY_SETTINGS)
     public void onPreferenceChange_notifyPreference() {
         assertFalse(
                 mController.onPreferenceChange(
@@ -271,7 +276,6 @@
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_A2DP_OFFLOAD_CODEC_EXTENSIBILITY_SETTINGS)
     public void onPreferenceChange_listPreferenceIsNull() {
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(null);
         assertFalse(
@@ -280,13 +284,11 @@
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_A2DP_OFFLOAD_CODEC_EXTENSIBILITY_SETTINGS)
     public void onPreferenceChange_unknownCodecId() {
         assertFalse(mController.onPreferenceChange(mPreference, String.valueOf(TEST_ENTRY_VALUE)));
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_A2DP_OFFLOAD_CODEC_EXTENSIBILITY_SETTINGS)
     public void onPreferenceChange_codecSelection() {
         when(mBluetoothA2dp.getCodecStatus(mActiveDevice)).thenReturn(mCodecStatus);
         when(mBluetoothA2dp.isOptionalCodecsEnabled(mActiveDevice))
@@ -327,6 +329,14 @@
                         mPreference, String.valueOf(mCodecTypeAPTX.getCodecId())));
         mCodecStatus =
                 new BluetoothCodecStatus.Builder()
+                        .setCodecConfig(mCodecConfigAPTXHD)
+                        .setCodecsSelectableCapabilities(mCodecConfigs)
+                        .build();
+        assertTrue(
+                mController.onPreferenceChange(
+                        mPreference, String.valueOf(mCodecTypeAPTXHD.getCodecId())));
+        mCodecStatus =
+                new BluetoothCodecStatus.Builder()
                         .setCodecConfig(mCodecConfigOPUS)
                         .setCodecsSelectableCapabilities(mCodecConfigs)
                         .build();
@@ -336,7 +346,6 @@
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_A2DP_OFFLOAD_CODEC_EXTENSIBILITY_SETTINGS)
     public void updateState_notifyPreference() {
         assertFalse(
                 mController.onPreferenceChange(
@@ -437,7 +446,6 @@
     }
 
     @Test
-    @EnableFlags(Flags.FLAG_A2DP_OFFLOAD_CODEC_EXTENSIBILITY_SETTINGS)
     public void onBluetoothServiceConnected_verifyBluetoothA2dpConfigStore() {
         mCodecStatus =
                 new BluetoothCodecStatus.Builder()
diff --git a/tests/robotests/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceControllerTest.java
index fffe6b1..d17b49b 100644
--- a/tests/robotests/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/linuxterminal/LinuxTerminalPreferenceControllerTest.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.development.linuxterminal;
 
+import static android.system.virtualmachine.VirtualMachineManager.CAPABILITY_NON_PROTECTED_VM;
+
 import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.MEMORY_MIN_BYTES;
 import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.STORAGE_MIN_BYTES;
 import static com.android.settings.development.linuxterminal.LinuxTerminalPreferenceController.TERMINAL_PACKAGE_NAME_RESID;
@@ -32,6 +34,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.storage.StorageManager;
+import android.system.virtualmachine.VirtualMachineManager;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -43,27 +46,33 @@
 /** Tests {@link LinuxTerminalPreferenceController} */
 @RunWith(RobolectricTestRunner.class)
 public class LinuxTerminalPreferenceControllerTest {
+    private static final String TERMINAL_PACKAGE_NAME = "com.android.virtualization.terminal";
 
     @Mock private Context mContext;
     @Mock private PackageManager mPackageManager;
     @Mock private StorageManager mStorageManager;
+    @Mock private VirtualMachineManager mVirtualMachineManager;
     @Mock private PackageInfo mPackageInfo;
 
-    private String mTerminalPackageName = "com.android.virtualization.terminal";
     private LinuxTerminalPreferenceController mController;
 
     @Before
     public void setup() throws Exception {
         MockitoAnnotations.initMocks(this);
-        doReturn(mTerminalPackageName).when(mContext).getString(TERMINAL_PACKAGE_NAME_RESID);
+        doReturn(TERMINAL_PACKAGE_NAME).when(mContext).getString(TERMINAL_PACKAGE_NAME_RESID);
 
         doReturn(mPackageManager).when(mContext).getPackageManager();
         doReturn(mPackageInfo)
                 .when(mPackageManager)
-                .getPackageInfo(eq(mTerminalPackageName), anyInt());
+                .getPackageInfo(eq(TERMINAL_PACKAGE_NAME), anyInt());
 
         doReturn(mStorageManager).when(mContext).getSystemService(StorageManager.class);
         doReturn(STORAGE_MIN_BYTES).when(mStorageManager).getPrimaryStorageSize();
+
+        doReturn(mVirtualMachineManager)
+                .when(mContext)
+                .getSystemService(VirtualMachineManager.class);
+        doReturn(CAPABILITY_NON_PROTECTED_VM).when(mVirtualMachineManager).getCapabilities();
     }
 
     @Test
@@ -83,6 +92,15 @@
     }
 
     @Test
+    public void isAvailable_whenVmNotSupported_returnFalse() {
+        doReturn(0).when(mVirtualMachineManager).getCapabilities();
+
+        mController = createController(mContext);
+
+        assertThat(mController.isAvailable()).isFalse();
+    }
+
+    @Test
     public void isAvailable_whenPackageExists_returnsTrue() {
         mController = createController(mContext);
 
@@ -102,7 +120,7 @@
     public void isAvailable_whenAppDoesNotExist_returnsFalse() throws Exception {
         doThrow(new NameNotFoundException())
                 .when(mPackageManager)
-                .getPackageInfo(eq(mTerminalPackageName), anyInt());
+                .getPackageInfo(eq(TERMINAL_PACKAGE_NAME), anyInt());
 
         mController = createController(mContext);
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java
index 89cc6d9..f68f67e 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoDialogControllerTest.java
@@ -143,36 +143,6 @@
     }
 
     @Test
-    public void populateImeiInfo_cdmaSimPresent_shouldSetImeiInfoAndSetAllCdmaSetting() {
-        ReflectionHelpers.setField(mController, "mSubscriptionInfo", null);
-        when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA);
-        when(mTelephonyManager.getSimState(anyInt())).thenReturn(
-                TelephonyManager.SIM_STATE_PRESENT);
-
-        mController.populateImeiInfo();
-
-        verify(mDialog).setText(ID_MEID_NUMBER_VALUE, MEID_NUMBER);
-        verify(mDialog).setText(ID_MIN_NUMBER_VALUE, "");
-        verify(mDialog).setText(ID_PRL_VERSION_VALUE, "");
-        verify(mDialog).setText(eq(ID_IMEI_VALUE), any());
-        verify(mDialog).setText(eq(ID_IMEI_SV_VALUE), any());
-    }
-
-    @Test
-    public void populateImeiInfo_cdmaSimABSENT_shouldSetImeiInfoAndSetAllCdmaSetting() {
-        ReflectionHelpers.setField(mController, "mSubscriptionInfo", null);
-        when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_CDMA);
-        when(mTelephonyManager.getSimState(anyInt())).thenReturn(TelephonyManager.SIM_STATE_ABSENT);
-
-        mController.populateImeiInfo();
-
-        verify(mDialog).setText(ID_MEID_NUMBER_VALUE, MEID_NUMBER);
-        verify(mDialog).setText(ID_MIN_NUMBER_VALUE, "");
-        verify(mDialog).setText(ID_PRL_VERSION_VALUE, "");
-        verify(mDialog).removeViewFromScreen(ID_GSM_SETTINGS);
-    }
-
-    @Test
     public void populateImeiInfo_gsmSimDisabled_shouldSetImeiAndRemoveCdmaSettings() {
         ReflectionHelpers.setField(mController, "mSubscriptionInfo", null);
         when(mTelephonyManager.getPhoneType()).thenReturn(TelephonyManager.PHONE_TYPE_GSM);
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java
index f224c8a..07e563b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java
@@ -95,7 +95,7 @@
 
     @Test
     public void updateSeekBar_percentageMode_hasCorrectProperties() {
-        final CharSequence expectedTitle = "10%";
+        final CharSequence expectedTitle = "20%";
         Settings.Global.putInt(
                 mResolver,
                 Global.AUTOMATIC_POWER_SAVE_MODE,
diff --git a/tests/screenshot/Android.bp b/tests/screenshot/Android.bp
index f79d00f..d3f4160 100644
--- a/tests/screenshot/Android.bp
+++ b/tests/screenshot/Android.bp
@@ -72,7 +72,6 @@
         "truth",
     ],
 
-    upstream: true,
     instrumentation_for: "ScreenshotTestStub",
     java_resource_dirs: ["config"],
 }
diff --git a/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java b/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java
index 5eb76f1..5482b41 100644
--- a/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/development/mediadrm/ForceSwSecureCryptoFallbackPreferenceControllerTest.java
@@ -69,7 +69,11 @@
     @Test
     @EnableFlags(Flags.FLAG_FORCE_L3_ENABLED)
     public void updateState_flagEnabled_checkPreference() {
-        mController.updateState(mPreference);
+        try (MediaDrm drm = new MediaDrm(WIDEVINE_UUID)) {
+            mController.updateState(mPreference);
+        } catch (UnsupportedSchemeException ex) {
+            assumeNoException(ex);
+        }
         assertThat(mPreference.isEnabled()).isTrue();
         assertThat(mPreference.isChecked()).isFalse();
         assertThat(WidevineProperties.forcel3_enabled().orElse(false)).isFalse();
diff --git a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
index 3fa3808..d68ffa8 100644
--- a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -17,6 +17,7 @@
 package com.android.settings.deviceinfo.simstatus;
 
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_DATA_NETWORK_TYPE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELLULAR_NETWORK_STATE;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_VOICE_NETWORK_TYPE_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_LABEL_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_VALUE_ID;
@@ -30,8 +31,10 @@
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SERVICE_STATE_VALUE_ID;
 
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -42,6 +45,7 @@
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyCallback;
 import android.telephony.TelephonyManager;
 import android.telephony.UiccCardInfo;
 import android.telephony.euicc.EuiccManager;
@@ -65,6 +69,7 @@
 import java.util.HashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.Executor;
 
 @RunWith(AndroidJUnit4.class)
 public class SimStatusDialogControllerTest {
@@ -74,6 +79,10 @@
     @Mock
     private TelephonyManager mTelephonyManager;
     @Mock
+    private TelephonyManager mTelephonyManagerForSub1;
+    @Mock
+    private TelephonyManager mTelephonyManagerForSub2;
+    @Mock
     private SubscriptionInfo mSubscriptionInfo;
     @Mock
     private ServiceState mServiceState;
@@ -94,6 +103,9 @@
 
     private static final int MAX_PHONE_COUNT_DUAL_SIM = 2;
 
+    private static final int TEST_SUB_ID_1 = 1;
+    private static final int TEST_SUB_ID_2 = 2;
+
     @Before
     @UiThreadTest
     public void setup() {
@@ -106,6 +118,7 @@
         mSubscriptionManager = spy(mContext.getSystemService(SubscriptionManager.class));
         doReturn(mSubscriptionInfo).when(mSubscriptionManager)
                 .getActiveSubscriptionInfoForSimSlotIndex(anyInt());
+        doReturn(TEST_SUB_ID_1).when(mSubscriptionInfo).getSubscriptionId();
 
         when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
         when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
@@ -113,8 +126,10 @@
         when(mContext.getSystemService(EuiccManager.class)).thenReturn(mEuiccManager);
         when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
 
-        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
-                anyInt());
+        doReturn(mTelephonyManagerForSub1).when(mTelephonyManager).createForSubscriptionId(
+                TEST_SUB_ID_1);
+        doReturn(mTelephonyManagerForSub2).when(mTelephonyManager).createForSubscriptionId(
+                TEST_SUB_ID_2);
         doReturn(2).when(mTelephonyManager).getCardIdForDefaultEuicc();
         doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyManager).getDataNetworkType();
 
@@ -340,4 +355,45 @@
         verify(mDialog).setSettingVisibility(IMS_REGISTRATION_STATE_LABEL_ID, false);
         verify(mDialog).setSettingVisibility(IMS_REGISTRATION_STATE_VALUE_ID, false);
     }
+
+    @Test
+    public void onSubscriptionsChanged_updateSubInfoToNewSub_testTelephonyCallbackUnregRereg() {
+        // sub id changed from 1 to 2
+        SubscriptionInfo subInfo2 = mock(SubscriptionInfo.class);
+        doReturn(TEST_SUB_ID_2).when(subInfo2).getSubscriptionId();
+        doReturn(subInfo2).when(mSubscriptionManager)
+                .getActiveSubscriptionInfoForSimSlotIndex(anyInt());
+        mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+        verify(mTelephonyManagerForSub2).registerTelephonyCallback(any(Executor.class),
+                any(TelephonyCallback.class));
+
+        // sub id changed from 2 to 1
+        SubscriptionInfo subInfo1 = mock(SubscriptionInfo.class);
+        doReturn(TEST_SUB_ID_1).when(subInfo1).getSubscriptionId();
+        doReturn(subInfo1).when(mSubscriptionManager)
+                .getActiveSubscriptionInfoForSimSlotIndex(anyInt());
+        mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+        verify(mTelephonyManagerForSub2).unregisterTelephonyCallback(
+                mController.mTelephonyCallback);
+        verify(mTelephonyManagerForSub1).registerTelephonyCallback(any(Executor.class),
+                any(TelephonyCallback.class));
+    }
+
+    @Test
+    public void onSubscriptionsChanged_updateSubInfoToNull_testTelephonyCallbackUnreg() {
+        doReturn(null).when(mSubscriptionManager).getActiveSubscriptionInfoForSimSlotIndex(
+                anyInt());
+        mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+        verify(mTelephonyManagerForSub1).unregisterTelephonyCallback(
+                mController.mTelephonyCallback);
+    }
+
+    @Test
+    public void onSubscriptionsChanged_updateSubInfoToNull_shouldUpdateDataStatusToUnknown() {
+        doReturn(null).when(mSubscriptionManager).getActiveSubscriptionInfoForSimSlotIndex(
+                anyInt());
+        mController.mOnSubscriptionsChangedListener.onSubscriptionsChanged();
+        final String unknownText = ResourcesUtils.getResourcesString(mContext, "radioInfo_unknown");
+        verify(mDialog).setText(CELLULAR_NETWORK_STATE, unknownText);
+    }
 }